Danke, das ist soweit genau das was ich wollte. Vor allem leicht wartbar wenn es bei mir dann auch funktioniert.
Frage:
In 'TDatenContainer.ReadFromStream' und 'TDatenContainer.WriteToStream' benutzt Du 'MyDaten:TDaten' machst aber kein 'Create', funktioniert das auch so ?
Diese Frage entstand durch folgendes Problem:
1.
Ein Datensatz wurde bereits vorher gespeichert.
2.
TempDaten wurde in die WatchList aufgenomen und die procedure 'LadenClick' (siehe unten) aufgerufen.
3.
Nachdem TempDaten angelegt wurde 'TempDaten:=TDaten.Create('', 0)', wird der erste Datensatz (0) ausgelesen.
Problem:
Nach ausführen von 'getItemAt(0)' ist TempDaten anscheinend nicht mehr vorhanden (Inaccessible value). Das führt natürlich zu einem Fehler wenn ich die Daten verarbeiten will.
Delphi-Quellcode:
procedure TMainForm.LadenClick(Sender: TObject);
var
FileName: String;
TempDaten: TDaten;
begin
FileName := InputBox('Laden', 'File Name:', '<datei>');
if FileExists(FileName) then
begin
DatenListe := TDatenContainer.Create(FileName);
DatenListe.ReadFromFile;
TempDaten := TDaten.Create('', 0);
TempDaten := DatenListe.getItemAt(0);
if TempDaten = nil then
begin
exit;
end;
Label1.Caption := TempDaten.mytext;
Label2.Caption := IntToStr(TempDaten.myinteger);
TempDaten.Free;
end;
end;
Hat das alles wieder etwas mit 'Pointern' zu tun ?
Gruß,
Karsten
[edit=Daniel B]Delphi-Tags korrigiert. Mfg, Daniel B[/edit]