delphi中com 组件接口如何实现类似 array of ^T 的参数传递?急切期待你们的宝贵意见! (100分)

  • 主题发起人 主题发起人 zxabber
  • 开始时间 开始时间
Z

zxabber

Unregistered / Unconfirmed
GUEST, unregistred user!
我想在com组件传出我的结构数组,想直接把结构的首指针作为参数传出去,如何才能实现?
例如:我定义了一个结构
type
T = record
name : array [1..30] of char;
data : Integer;
end;
在 COM 组件中有一个方法,想把 array of ^T 当参数进行传递
var
TArr : array of ^T
function MYCOM.MYMethod(out V: Variant ):Hresult;
begin
StrCopy(TArr[0].name, 'test');
TArr[0].data := 6;
StrCopy(TArr[1].name, 'test2');
TArr[1].data := 7;
V := TArr;
end;

想在C++ 中进行类似调用,可否实现?怎样实现?
p 为 IMyCOM 的接口指针
T *cT[];
p->MYMethod(cT);
的调用
用 cT 可以遍历得到TAttr[0]和TAttr[1]的内容
即:TArr[0].name == 'test';
TArr[0].data == 6;
TArr[1].name == 'test2');
TArr[1].data == 7;


 
function MYCOM.MYMethod(out V: Variant ):Hresult;
begin
StrCopy(TArr[0].name, 'test');
TArr[0].data := 6;
StrCopy(TArr[1].name, 'test2');
TArr[1].data := 7;
v:= varArrayCreate([low(TArr), High(TArr), 1,2], varVariant);
for i:= low(TArr) to High(TArr)do
begin
v[i,1]:= TArr.name;
v[i,2]:= TArr.data;
end;

end;

 
谢谢mahala的答案,我现在就是用这种方法做的。到目前为止还没有发现直接传指针的方法。
 
后退
顶部