Index

Erstellen einfacher Programme

1. Datentypen (8)


Programmbeispiel zu Dateien

Adressverwaltung

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.

[Index] [Zurück]


Autor: Jürgen Dehmer
Letzte Änderung: 18. November 2002