procedure TForm1.Button2Click(Sender: TObject); var TempStream : TMemoryStream; v : olevariant; begin TempStream := TMemoryStream.Create; V :='99999'; listbox1.Items.Add(v); listbox1.Items.SaveToStream(TempStream TempStream.Position := 0; RichEdit1.Lines.LoadFromStream( TempStream); TempStream.Free; end;
如果olevariant不是字符类型的也可以这样吗?
procedure TCommClient.DoOnData(aData: OleVariant; const aSource: WideString; out aAction: Integer); var S : TMemoryStream; P : Pointer; L : Integer; begin if Assigned(FOnData) then begin S := TMemoryStream.Create; try //将传过来的安全数组转换为TStream类型,触发事件 L := VarArrayHighBound(aData, 1) - VarArrayLowBound(aData, 1) + 1; P := VarArrayLock(aData); try S.Seek(0, soFromBeginning); S.WriteBuffer(P^, L); finally VarArrayUnlock(aData); end; FOnData (Self, S, aSource, aAction); finally S.Free end; end; end;
var
TempStream : TMemoryStream;
v : olevariant;
begin
TempStream := TMemoryStream.Create;
V :='99999';
listbox1.Items.Add(v);
listbox1.Items.SaveToStream(TempStream
TempStream.Position := 0;
RichEdit1.Lines.LoadFromStream( TempStream);
TempStream.Free;
end;
var
S : TMemoryStream;
P : Pointer;
L : Integer;
begin
if Assigned(FOnData) then
begin
S := TMemoryStream.Create;
try
//将传过来的安全数组转换为TStream类型,触发事件
L := VarArrayHighBound(aData, 1) - VarArrayLowBound(aData, 1) + 1;
P := VarArrayLock(aData);
try
S.Seek(0, soFromBeginning);
S.WriteBuffer(P^, L);
finally
VarArrayUnlock(aData);
end; FOnData (Self, S, aSource, aAction);
finally
S.Free
end;
end;
end;