Stream和Variant如何相互转换?(100分)

  • 主题发起人 主题发起人 GanQuan
  • 开始时间 开始时间
G

GanQuan

Unregistered / Unconfirmed
GUEST, unregistred user!
不知是什么stream,好象stream对象有一个类似readtext的方法。
 
就是要在服务器端把数据封装成流的形式,再转换为OleVariant类型,
在客户端调用服务,得到OleVariant类型,再转换成流并从流中读出数据。
什么流无所谓吧.
 
自己解决了!
 
GanQuan,如果你把解决方案贴过来,我就把100分发给你
否则,就都给djjsl了
 
这些天不能上网,这段代码也是网上找到的。希望对其他人有用。
procedure VariantToStream(const Data: OleVariant; Stream: TStream);
var
p: Pointer;
begin
p := VarArrayLock(Data);
try
Stream.Write(p^, VarArrayHighBound(Data,1) + 1);
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;
Stream.Read(p^, Stream.Size);
finally
VarArrayUnlock(Result);
end;
end;

 
多人接受答案了。
 
后退
顶部