我用DELPHI写了一个COM,需要返回一个变体的数组,请问我怎么实现,能否给一定的代码实例!谢谢!
我看你最好使用一个输出的属性
up
關注,我正在學習com
服务端
function t : OleVariant;
var
v : OleVariant;
begin
v := VarArrayCreate([0,2],varVariant);
v[0] := 1;
v[1] := 111;
v[2] := 1.121;
Result := v;
end;
客户端
var
v : OleVariant;
begin
v : myCom.t;
showmessage(VartoStr(v[0]));
showmessage(VartoStr(v[1]));
showmessage(VartoStr(v[2]));
正如楼上所说
也可以使用类型库。
example
COM:
aData :=VarArrayCreate([0,HeadADOQ.FieldCount-1],varVariant);
for I:= 0 to HeadADOQ.FieldCount do
aData[I] :=HeadADOQ.Fields[I].Value;
Client(ISAPI):
DCOMLink.AppServer.GetHeadInfo(vSH,aData);
if VarIsNull(aData) then ...
else
for I :=VarArrayLowBound(aData,1) to varArrayHighBound(aData,1) do
if CompareStr(TagString,OnHeadInfo[I])=0 then
ReplaceText :=aData[I];
可以用VarArrayCreate来是olevariant转换成数组,也可以直接用
variant* ,注意选in和out,in是传进的,out是传出的,函数的返回值只可以是HRESULT,但在代码里还是variant*