急(0分)

  • 主题发起人 主题发起人 kiven_lu
  • 开始时间 开始时间
K

kiven_lu

Unregistered / Unconfirmed
GUEST, unregistred user!
如何将一个olevariant类型变量转换为Tstream
 
一般不需要转换
不过你可以这样
var
A: Variant;
begin
A := VarArrayCreate([0, SizeOf(流)], varbyte);
P := VarArrayLock(A);
try
Move(....)
finally
VarArrayUnlock(A);
end;

end;
或反过来操作
 
procedure TForm2.VariantToStream (const v : olevariant;
Stream : TMemoryStream);
var
p : pointer;
begin

Stream.Position := 0;
Stream.Size := VarArrayHighBound (v, 1) - VarArrayLowBound(v, 1) + 1;
p := VarArrayLock (v);
Stream.Write (p^, Stream.Size);
VarArrayUnlock (v);
Stream.Position := 0;
end;

procedure TForm2.StreamToVariant (Stream : TMemoryStream;
var v : OleVariant);
var
p : pointer;
begin

v := VarArrayCreate ([0, Stream.Size - 1], varByte);
p := VarArrayLock (v);
Stream.Position := 0;
Stream.Read (p^, Stream.Size);
VarArrayUnlock (v);
end;

 
后退
顶部