比较难的问题:关于从dll返回的SAFEARRAY怎么取得数据?(100分)

  • 主题发起人 主题发起人 mygis
  • 开始时间 开始时间
M

mygis

Unregistered / Unconfirmed
GUEST, unregistred user!
VB写的activex dll中申明pet类
Public lpet(138, 48) As Single

Public Property Get gwqArrayPet() As Single()
gwqArrayPet = lpet
End Property

在delphi中调用时可以
var
dilpet:pSafeArray
//gwqArrayPet() 属性返回pSafeArray
begin
dilpet:=pet1.gwqArrayPet
//pet1为引入的activex dll的类的实例
end;
我要得到VB中lpet(138, 48)的数据
接下去怎么写?
 
VB里的类好象不能被DELPHI所使用,
 
VB里的类好象不能被DELPHI所使用???
activex dll中的当然可以啊,我都已经实现了。
现在就是对返回的pSafeArray怎么取得数据
 
如果是COM当然可以,不过我不知道你怎么申明VB里的类
 
就是一个函数和2个属性,属性如下
Public Property Get gwqArrayPet() As Single()
gwqArrayPet = lpet
End Property


Public Property Get gwqArrayZhanDian() As String()
gwqArrayZhanDian = zhandian
End Property
不直接要数据的话,已经在delphi实现了,现在就是怎么得到数组的数据
 
SafeArray是一个结构
dilpet.就弹出了很多属性
 
6个,就是不会写代码啊[:(]
 
uses activex;

var
r:single;
d:array[0..1]of integer;
d[0]:=10;
d[1]:=20;
SafeArrayGetElement(dilpet,d,r) //dilpet[10,20]返回在r
 
谢谢Pipi,这样已经取得了数组的数据,但是这样一个一个的取,有没有快速的方法把整个数组的所有数据全部导出到一般的delphi数组中?
 
刚才试了一下,速度还可以。谢谢Pipi,这个问题搞了1天了。
 
后退
顶部