type TFunc = class
public
//...
//Variant 转换成 Stream 的函数
class function VariantToMemStream ( const v :olevariant ): TMemoryStream;
//Stream 转换成 Variant 的函数
class function MemStreamToVariant ( Stream : TStream ): OleVariant; //...
end;
//Variant 转换成 Stream 的函数
class function TFunc.VariantToMemStream ( const v :olevariant ): TMemoryStream;
var
p : pointer;
Stream : TMemoryStream;
begin
Stream := TMemoryStream.Create;
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;
Result := Stream;
end; //Stream 转换成 Variant 的函数
class function TFunc.MemStreamToVariant ( Stream : TStream ): OleVariant;
var
p : pointer;
v : OleVariant;
begin
v := VarArrayCreate ([0, Stream.Size - 1], varByte);
p := VarArrayLock (v);
Stream.Position := 0;
Stream.Read (p^, Stream.Size);
VarArrayUnlock (v);
Result := v;
end;
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货