>>3、[blue]MTS对象的接口函数的参数据类型问题。[/blue]
>> 想通过COM对象的接口函数的参数传递几种特殊类型的参数,如:记录类型、Delphi对象。
>> 不知是否可以胜任?如何去作的?
我是通过Stream和OleVariant的转换传递传递的。
先把自定义记录类型读到Stream,再转成OleVariant,传递到另一方后,OleVariant转换
成Stream,再读出记录。对象也可以这样。
用惯了,也没有再去找其他简单方法!
procedure VariantToStream(const Data: OleVariant;
Stream: TStream);
var
p: Pointer;
begin
p := VarArrayLock(Data);
try
Stream.Write(p^, VarArrayHighBound(Data,1) + 1);
//assuming low bound = 0
finally
VarArrayUnlock(Data);
end;
end;
function StreamToVariant(Stream: TStream): OleVariant;
var
p: Pointer;
begin
Result := VarArrayCreate([0, Stream.Size - 1], varByte);
p := VarArrayLock(Result);
try
Stream.Position := 0;
//start from begin
ning of stream
Stream.Read(p^, Stream.Size);
finally
VarArrayUnlock(Result);
end;
end;