Wir deklarieren einen Record TKunde mit zwei Feldern für Name und Vorname. Es können natürlich beliebig weitere Felder für Anschrift etc. ergänzt werden:
type
TKunde = record
Name, Vorname: string[20];
end;
|
Von diesem Typ leiten wir viele Datensaätze als Feld (array) ab, wobei Maximum eine vorab deklarierte Konstante ist. Die aktuelle Kundenzahl halten wir in der Varisblen Anzahl fest:
var Kunde: array[1..Maximum] of TKunde; Anzahl: integer; |
Wir gehen nun davon aus, dass eine Anzahl Kunden eingegeben wurde, die nun in einer Datei Kunden.dat gespeichert werden soll.
Hierzu ist eine Dateivariable nötig, die als file of Datentyp deklariert wird. Diese Variable deklarieren wir im Deklarationsteil der Speichern-Prozedur:
procedure SpeichernClick(...);
var
Datei: file of TKunde; // Dateivariable
i: integer; // Zähler
begin
SaveDialog1.Execute; // Eingabe des Dateinamens
AssignFile(Datei, SaveDialog1.FileName); // Zuordnung
// Dateiname zur Dateivariablen
Rewrite(Datei); // Datei neu anlegen und öffnen
// Nun in einer Schleife Datenelemente speichern:
for i := 1 to Anzahl do
write(Datei,Kunde[i]); // Element aus Kunde [i]
// in Datei schreiben
CloseFile(Datei); // Datei schließen
end;
|
SaveDialog1 ist ein in Delphi vorhandener Dialog für die Eingabe des Dateinamens mit Pfad durch Auswahl in einem Dialog-Fenster, wie wir es in Windows kennen.
Die Anweisung Execute zeigt das Dialogfeld an.
Eigentlich handelt es sich dabei um eine Funktion, welche einen booleschen Wert also true oder false liefert, je nach dem, ob ein Dateiname festgelegt wurde oder nicht.
Der Dateiname (evtl. mit Pfad) kann aus der Eigenschaft FileName ausgelesen werden.
Auf ähnliche Weise erfolgt das Rückladen der Daten aus der Datei. Dabei kann die Anzahl der in Kunden.dat vorhandenen Datensätze mit FileSize ermittelt werden. Das Ergebnis übertragen wir zurück in Anzahl:
procedure LadenClick(...);
var
Datei: file of TKunde; // Dateivariable
i: integer; // Zähler
begin
OpenDialog1.Execute; // Eingabe des Dateinamens
AssignFile(Datei, OpenDialog1.FileName); // Zuordnung
// Dateiname zur Dateivariablen
Reset(Datei); // vorhandene Datei öffnen
Anzahl := FileSize(Datei); // Anzahl der Datensätze
// ermitteln und in Anzahl speichern
// Nun in einer Schleife Datenelemente laden:
for i := 1 to Anzahl do
read(Datei,Kunde[i]); // Element aus Datei lesen und
// in Kunde[i] eintragen
CloseFile(Datei); // Datei schließen
end;
|
Der OpenDialog funktionert in ähnlicher Weise wie der SaveDialog und liefert den festgelegten Dateinamen in FileName.
Eine Datei wird beim Lesen nicht verändert.
Autor: Jürgen Dehmer
Letzte Änderung: 18. November 2002