function tform1.StreamToVariant(Strm: TMemoryStream): OleVariant;
var
Data: PByteArray;
begin
Result := VarArrayCreate([0, Strm.Size - 1], varByte);
Data := VarArrayLock(Result);
try
Strm.Position := 0;
Strm.ReadBuffer(Data^, Strm.Size);
finally
VarArrayUnlock(Result);
end;
end;function tform1.VariantToStream(OV: OleVariant): TMemoryStream;
var
Data: PByteArray;
Size: integer;
begin
Result := TMemoryStream.Create;
try
Size := VarArrayHighBound (OV, 1) - VarArrayLowBound(OV, 1) + 1;
Data := VarArrayLock(OV);
try
Result.Position := 0;
Result.WriteBuffer(Data^, Size);
finally
VarArrayUnlock(OV);
end;
except
Result.Free;
Result := nil;
end;
end;procedure TForm1.Button1Click(Sender: TObject);
var
lszstream: TMemoryStream;
lszV: Variant; begin
lszstream:=TMemoryStream.Create;
lszV:=vararrayof(['0']);
lszstream:=VariantToStream(lszv);
lszv:= StreamToVariant(lszstream);
edit1.Text:= lszv[0];
freeandnil(lszstream); end;
edit1.text='8' 怎回事
var
Data: PByteArray;
begin
Result := VarArrayCreate([0, Strm.Size - 1], varByte);
Data := VarArrayLock(Result);
try
Strm.Position := 0;
Strm.ReadBuffer(Data^, Strm.Size);
finally
VarArrayUnlock(Result);
end;
end;function tform1.VariantToStream(OV: OleVariant): TMemoryStream;
var
Data: PByteArray;
Size: integer;
begin
Result := TMemoryStream.Create;
try
Size := VarArrayHighBound (OV, 1) - VarArrayLowBound(OV, 1) + 1;
Data := VarArrayLock(OV);
try
Result.Position := 0;
Result.WriteBuffer(Data^, Size);
finally
VarArrayUnlock(OV);
end;
except
Result.Free;
Result := nil;
end;
end;procedure TForm1.Button1Click(Sender: TObject);
var
lszstream: TMemoryStream;
lszV: Variant; begin
lszstream:=TMemoryStream.Create;
lszV:=vararrayof(['0']);
lszstream:=VariantToStream(lszv);
lszv:= StreamToVariant(lszstream);
edit1.Text:= lszv[0];
freeandnil(lszstream); end;
edit1.text='8' 怎回事
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货