zhanghao16 发表于 2006-5-30 19:31:40

各位前辈!求教CLF结点中数组传参问题?一定要拉小弟一把啊~~~

各位前辈!小弟用delphi写dll文件,其中一函数需传入一数组,将处理过的函数返回。
可是Labview的数组数据结构和传统语言里的数组不太一样。在网上查了好久,也没有答案。有人举了VC调用Labview里的高级函数控制数组的例子,可是在Delphi里又怎么调用这些函数啊?例如:MgErr NumericArrayResize(int32typeCode, int32 numDims, UHandle *dataHP,int32 totalNewSize);这样的
大哥一定要帮帮忙啊!

zhanghao16 发表于 2006-5-30 19:34:54

<P>其实小弟的需求并不一定要labview给dll传入数组,但要求dll返回数组给labview。</P>
<P>labview怎么接收数组呢?</P>
<P>各位前辈有例子吗?拜托了~~~</P>

zhanghao16 发表于 2006-5-31 18:19:44

<P>各位前辈啊~小弟昨天试了个笨办法,调通了,却怎么也想不通。。。</P>
<P>delphi里定义接收数组的数据结构如下:</P>
<P>TD1 = record<BR>    dimSize: integer;//数据大小<BR>    elt: array of Char; //小弟把数组定死,就不用调labview里的高级函数动态改变大小了<BR>end;<BR>_TD1 = ^TD1; //定义指向labview数组的指针<BR>TD1Hd1 = ^_TD1; //定义指针的指针</P>
<P>function receiveFromFMU(var Arr: _TD1): integer;</P>
<P>beign</P>
<P> {这里定义的var Arr,相当于VC里的out参数}</P>
<P>end;</P>
<P>-----------------------在Labview里,连接数组后,小弟选择入口参数为:</P>
<P>long receiveFromFMU(Array1DUnsigned char **arg1);</P>
<P>因为arg1选的是“数组句柄”所以按理说,在dll里的</P>
<P>function receiveFromFMU(var Arr: _TD1): integer;</P>
<P>中,Arr应该是 var Arr: TD1Hdl才对~~但经过测试,只能是var Arr: _TD1正常,TD1Hdl就错误了。。。</P>
<P>这是为什么啊??希望各大位前辈给小弟个解释。</P>

zhanghao16 发表于 2006-5-31 18:23:06

<P>难到是说,labview里的Array1DUnsigned char **arg1 才是labview里数组结构的指针??</P>
<P>如果这样,那Array1DUnsigned char *arg1又是什么东西??</P>

zhanghao16 发表于 2006-5-31 18:27:01

<P>小弟看了labview里的例子,人家接收有的都是TD1Hdl...可为什么我用TD1Hdl就出错了呢?</P>
<P>各大位好心的大哥,帮帮忙吧!!(版主大哥~~~你在哪啊~!~?~)</P>
<P>-----祝大家端午节快乐!</P>

zhanghao16 发表于 2006-6-1 16:55:51

<P>嗯~查了一下,感觉可能是因为变参传地址的原故。</P>

cpubbs 发表于 2006-6-1 18:32:01

<P><a href="http://www.cpubbs.com/old_bbs/dispbbs.asp?boardID=4&amp;ID=13221&amp;page=1" target="_blank" >http://www.cpubbs.com/old_bbs/dispbbs.asp?boardID=4&amp;ID=13221&amp;page=1</A></P>
<P>这里第8点有资料的兄弟!</P>
页: [1]
查看完整版本: 各位前辈!求教CLF结点中数组传参问题?一定要拉小弟一把啊~~~