内存流的读写
有这么一段代码,不是很明白:
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吗?