请大侠们看我的问题,再加100分!(100分)

  • 主题发起人 主题发起人 hening
  • 开始时间 开始时间
H

hening

Unregistered / Unconfirmed
GUEST, unregistred user!
请看:
关于COM对word数组的传递的疑问(200分)
http://www.gislab.ecnu.edu.cn/delphibbs/DispQ.asp?LID=178839
我觉得这并不应是很难得问题,在dll或COM中如何传递数组因该是比较
普遍的问题吧?
如果实在没人知道,就作一讨论吧
谁能说的全面谁分高(哎!除了我!:<)
 
在dll或COM中传递数组很easy,你能否说明的详细一点?
 
我有一个第三方的dll,实际是一个COM
在说明中提供了在VB中调用的方法:
Dim card1 As Object
Dim m As Integer
Dim ad_in As Integer
Dim dig_in As Integer
Dim ad_array(9) As Integer
Dim CardName As String
Private Sub Form_Load()
Set card1 = CreateObject("KHCard")
m = card1.Select_card("KH9230")
'以上两句在一个应用中必须且只能运行一次
End Sub
Private Sub Form_Unload(Cancel As Integer)
Set card1 = Nothing '释放对象
End Sub
Private Sub Command1_Click()
....
m = card1.ADpoll_array(ad_array, 10)
...
End Sub
*注:以上编程中,m为返回错误类型代码,0表示没有错误,错误代码定义
在介绍COM的方法时有如下声明:
M_ERRNO ADpoll_array(WORD buff[],int count);
我就不知到在delphi调用此COM时'WORD buff[]'对应的应该是何种变量?
反正不是数组,我已经试过:(
 
WORD buff[];
就是 var aPointer: PWORD;
 
或var buff: ^WORD;
 
to 0*0:
谢谢!
只是还是不行! :(
连编译都通不过;报错在此行:
var ad_array: PWORD;
GetMem(ad_array,20);
m := test.ADpoll_array(ad_array,10);
[Error] rtptest.pas(53): Type not allowed in OLE Automation call
好像COM不能用PWORD型
 
接受答案了.
 
后退
顶部