Object Pascal im Detail - Dateien www.delphi-treff.de
113
const FN =
Dateiname ;
Dies stellt die Datei in Relation zum gerade aktuellen Arbeitsverzeichnis. Da sich dieses aber durch verschiedene Aktionen ändern und auch von Programmlauf zu Programmlauf unterschiedlich sein kann,
verzichten wir hier ganz bewusst auf eine relative Pfadangabe.
4.11.4. Die Dateitypen
Wir unterscheiden drei Dateitypen: typisierte und untypisierte Dateien, sowie Textdateien: var
UntypisierteDate: file; TypisierteDatei: file of Datentyp;
Textdatei: TextFile; Der untypisierten Datei liegt, wie der Name schon sagt, kein konsistenter Datentyp zugrunde oder er ist uns
unbekannt. Deklariert werden solche Dateien durch das Schlüsselwort file. Bei typisierten Dateien folgt hinter file noch die Angabe des Datentyps, getrennt durch das Schlüsselwort
of. Dieser Datentyp entspricht den Standardtypen oder einer Zusammensetzung davon, in Form eines Records. Hier dürfen wir nichts verwenden, was intern durch einen Zeiger angesprochen wird. Somit keine dynamischen
Arrays, Strings oder Instanzen von Klassen beispielsweise. Die Größe eines Datensatzes steht bereits zum Zeitpunkt der Kompilierung fest.
4.11.4.1. Öffnen und Schließen der Datei
Egal welchen Dateityp wir ansprechen wollen, die folgenden Mechanismen sind für alle, in leicht abgewandelter Form, identisch:
Zunächst verbinden wir mittels AssignFile unsere Dateivariable mit dem voll qualifizierten Dateinamen. Über die jetzt initialisierte Dateivariable laufen alle Zugriffe auf die Datei; der Dateiname wird fortan nicht mehr
benötigt. Der Gültigkeitsbereich für Öffnen und Schließen einer Datei sollte bei beiden übereinstimmen. Spätestens
jedoch am Ende des Programms muss die Datei mit CloseFile wieder geschlossen werden, da sonst Datenverlust droht. Schreibvorgänge werden mitunter gepuffert, so dass erst dann auf die Festplatte
geschrieben wird wenn genügend Daten vorhanden sind, das Entpuffern angestoßen wird oder die Datei durch Schließen in einen konsistenten Zustand versetzt wird.
Object Pascal im Detail - Dateien www.delphi-treff.de
114
program LeereUntypisierteDatei; {APPTYPE CONSOLE}
uses SysUtils;
const FN =
C:\Dokumente und Einstellungen\user\UntypisierteDatei.dat ;
var UntypisierteDatei: file;
begin AssignFileUntypisierteDatei, FN;
RewriteUntypisierteDatei; CloseFileUntypisierteDatei;
end. Passen wir den Dateinamen in dieser Konsolenanwendung an und lassen das Programm laufen, so sehen wir
nur ein kurzes Aufflackern der Konsole. Es wird lediglich eine leere Datei durch Rewrite erzeugt und danach beendet sich das Programm. Existiert die Datei bereits vorher, dann wird sie gelöscht und neu erstellt.
Die beiden anderen Möglichkeiten eine Datei zu öffnen, sind Reset und Append. Reset öffnet eine vorhandene Datei, mit dem in der globalen Variable FileMode angegebenen Zugriffsmodus:
Modus Wert
Bedeutung fmOpenRead
Öffnet eine Datei zum Lesen
fmOpenWrite 1
Öffnet eine Datei zum Schreiben
fmOpenReadWrite
2 Öffnet eine Datei zum Lesen und
Schreiben Voreingestellt, aber veränderbar, ist hier 2.
Für Textdateien hat FileMode keine Bewandtnis, denn Reset öffnet Textdateien immer zum Lesen. Um aber auch bestehenden Textdateien Text hinzuzufügen, gibt es Append. Damit öffnen wir eine Datei, um Text
anzuhängen. Bei untypisierten Dateien besitzen Rewrite und Reset einen weiteren, optionalen Parameter, der die
Blockgröße angibt. Voreingestellt ist hier 128.
Object Pascal im Detail - Dateien www.delphi-treff.de
115
4.11.4.2. Schreiben und Lesen