In deinem Code ist nirgendwo zu erkennen, welche Variable denn nun den eigentlichen Record vom Typ TGonisFile enthält. Mit anderen Worten: Bislang hattest du nur den Typen deklariert, jedoch keine Variable dieses Typs angelegt. Solltest du z.B. beabsichtigen, mehrere gleichartige "Items" deines Records zu verwenden, böte es sich an, dafür ein Array zu einzusetzen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| private MaxData = 100; Data_Dateiname = ''; MeineDaten : Array[1..MaxData] of TGonisFile; Data_Anzahl, Data_Aktuell : Integer; Data_Pfad : String; Gesichert : Boolean;
Procedure Speichern; Procedure Laden; |
Beim Sichern des Records auf Platte speicherst du dann die bereits gefüllte Anzahl an Records (die du in der Variablen Data_Anzahl immer aktuell hältst):
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| Procecure TForm3.Speichern; Var f : File of TGonisFile; i : Integer;
Begin AssignFile(Data_Pfad + Data_Dateiname); Rewrite(f); For i := 1 to Data_Anzahl DO Write(f, MeineDaten[i]); CloseFile(f); Gesichert := True; End; |
Analog dazu lädst du die gespeicherten Records ebenfalls in einer privaten Procedure wieder ein:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| Procecure TForm3.Laden; Var f : File of TGonisFile; i : Integer;
Begin AssignFile(Data_Pfad + Data_Dateiname); Reset(f); i := 0;
While not Eof(f) DO Begin Inc(i); Read(f, MeineDaten[i]); End; CloseFile(f); Gesichert := True; Data_Anzahl := i; If Data_Anzahl > 0 Then Data_Aktuell := 1; End; |
Diese beiden Proceduren kannst du nun aus deinen ButtonKlickEreignisBehandlungen heraus aufrufen. Der Übersicht halber und auch programmtechnisch ist es nämlich immer günstiger, solche Methoden privat zu deklarieren und implementieren. So kannst du später leicht auch auf Menüsteuerung (Speichern und Laden aus dem Menü heraus statt via Buttons aufrufen) umsteigen, ohne große Herumkopiererei dieser Methoden.