Hi,
ich habe bei meinem Proggi eine Form, von der aus weitere zur Laufzeit erstellt werden können. Ich möchte nun eine Speicher/Laden -Funktion mit einbauen. Da sollen dann die ganzen Forms (mit Inhalt) abgespeichert werden.
Dazu hab ich folgenden Code aus der Hilfe mal getestet.
Aber irgendwie funktioniert das nicht.(Beispiel)
Delphi-Quellcode:
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;
Hier mein Beispiel:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
Fenster1:=TForm.Create(self);
Fenster1.show;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Form1.Memo2.Text:=ComponentToString(Fenster1);
end;
procedure TForm1.Button3Click(Sender: TObject);
var Fenster2:TComponent;
begin
Fenster2:=StringToComponent(Memo2.Text).Create(self);
end;
Was mach ich beim erstellen der neuen Form falsch?
THX orakel