内存流的读写

jfsaka 2007-08-13 04:37:26
有这么一段代码,不是很明白:
procedure TForm1.ButtonWriteClick(Sender: TObject);
var
EditClone: TEdit;
begin
EditClone := TEdit(JuUtils.StrToComp(Memo.Lines.Text, nil));
EditClone.Parent := Self;
EditClone.Name := EditClone.Name + 'Clone';
EditClone.Top := EditClone.Top + 40;
EditClone.Visible := True;
ShowComponentProperties(EditClone);
end;

其中JuUtils.StrToComp的定义如下:
function StrToComp(AStr: string; AComponent: TComponent): TComponent;
var
StrStream: TStringStream;
MemStream: TMemoryStream;
begin
StrStream := TStringStream.Create(AStr);
try
MemStream := TMemoryStream.Create();
try
Classes.ObjectTextToBinary(StrStream, MemStream);
MemStream.Seek(0, soFromBeginning);
Result := MemStream.ReadComponent(AComponent);
finally
FreeAndNil(MemStream);
end;
finally
FreeAndNil(StrStream);
end;
end;


前面已经定义了Edit1,Memo.Lines.Text保存的是Edit1的相关信息,可是这句代码:
EditClone := TEdit(JuUtils.StrToComp(Memo.Lines.Text, nil));
这里怎么把Edit1的信息附给了EditClone?而且这里JuUtils.StrToComp(Memo.Lines.Text, nil),这里参数可以为nil吗?
...全文
65 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
logne 2007-08-13
  • 打赏
  • 举报
回复
delphi的例子,看完了就该明白了吧
This example shows how to use the built-in component streaming support to convert any component into a string and convert that string back into a component.

function ComponentToString(Component: TComponent): string;

var
BinStream:TMemoryStream;
StrStream: TStringStream;
s: string;
begin
BinStream := TMemoryStream.Create;
try
StrStream := TStringStream.Create(s);
try
BinStream.WriteComponent(Component);
BinStream.Seek(0, soFromBeginning);
ObjectBinaryToText(BinStream, StrStream);
StrStream.Seek(0, soFromBeginning);
Result:= StrStream.DataString;
finally
StrStream.Free;

end;
finally
BinStream.Free
end;
end;

function StringToComponent(Value: string): TComponent;
var
StrStream:TStringStream;
BinStream: TMemoryStream;
begin
StrStream := TStringStream.Create(Value);
try
BinStream := TMemoryStream.Create;
try
ObjectTextToBinary(StrStream, BinStream);
BinStream.Seek(0, soFromBeginning);
Result := BinStream.ReadComponent(nil);

finally
BinStream.Free;
end;
finally
StrStream.Free;
end;
end;

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧