在Delphi要用Windows有的类型,不要用Delphi中的类,用record封装好,Delphi的应用程序用COM Server,这样,就可以写接口,封装成OleVariant,其实是Variant数组,对应了Windows的SafeArray,这样就可以了,比如看看下面的简单调用范例: Delphi: type TDelphiRecord = record ch: Char; str: Array[0..255] of Char; i: Integer; end;function GetPackedData(pData: VARIANT): HRESULT; stdcall; var data: TDelphiRecord; begin with data do begin ch := 'N'; .... end; Result := data; end;VC取得数据后强制转化成SafeArray就可以定义同样的struct来读取数据。
Delphi:
type
TDelphiRecord = record
ch: Char;
str: Array[0..255] of Char;
i: Integer;
end;function GetPackedData(pData: VARIANT): HRESULT; stdcall;
var
data: TDelphiRecord;
begin
with data do begin
ch := 'N';
....
end;
Result := data;
end;VC取得数据后强制转化成SafeArray就可以定义同样的struct来读取数据。