Hallo erstmal,
ich habe folgendes Problem. In einer Stringliste habe ich jede Menge Objecte die ich alle als Stream abspeichern will. Also ich will die Stringliste als Stream abspeichern und später wieder laden können (eine kleine Art Datenbank...).
Hier der Sourceausschnitt:
Im Debugger ist beim Speichern alles ganz gut gelaufen (in den Daten stehen richtige Werte).
Nur das Laden funktioniert nicht. In meinem Datensatz steht immer "Mist"...
MFG Alex
Delphi-Quellcode:
type
PDatensatz = ^TDatensatz;
TDatensatz = record
FStr1,
FStr2,
FStr3,
FStr4 : String;
end;
...
procedure TMainForm.MI_SpeichernClick(Sender: TObject);
var
TmpStream : TFileStream;
i : Integer;
Datensatz : PDatensatz;
begin
SaveDialog1.InitialDir := ExtractFilePath(Application.ExeName);
if SaveDialog1.Execute then
begin
TmpStream := TFileStream.Create(SaveDialog1.FileName, fmCreate);
for i := 0 to SL.Count - 1 do
begin
TObject(Datensatz) := SL.Objects[i];
TmpStream.Write(Datensatz^, SizeOf(TDatensatz));
end;
TmpStream.Free;
end;
end;
{ ---------------------------------------------------------------------------- }
procedure TMainForm.MI_LadenClick(Sender: TObject);
var
TmpStream : TFileStream;
Datensatz : PDatensatz;
begin
OpenDialog1.InitialDir := ExtractFilePath(Application.ExeName);
if OpenDialog1.Execute then
begin
TmpStream := TFileStream.Create(OpenDialog1.FileName, fmOpenRead);
New(Datensatz);
TmpStream.Read(Datensatz^, SizeOf(TDatensatz));
if Assigned(Datensatz) then
begin
if Assigned(SL) then
SL.AddObject(IntToStr(SL.Count + 1),TObject(Datensatz));
end;
TmpStream.Free;
end;
end;