Delphi Variant 通用类型[3] 流 Stream的相互转换

Delphi Variant 通用类型[3]  流 Stream的相互转换

//1、 Variant转成流
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;

// 2、流转成Variant
function StreamToVariant(Stream: TStream): OleVariant;
var
  p: Pointer;
begin
  Result := VarArrayCreate([0, Stream.Size - 1], varByte);// 创建一个一维的数组。类型为varByte
  p := VarArrayLock(Result);
  try
    Stream.Position := 0; // 设置流的位置
    Stream.Read(p^, Stream.Size);
  finally
    VarArrayUnlock(Result);
  end;
end;

  



创建时间:2020.12.22  更新时间:

原文地址:https://www.cnblogs.com/guorongtao/p/14172700.html