828
社区成员
发帖
与我相关
我的任务
分享
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;