Programmiersprache Pascal
Typisierte Binärdateien
Typisierte Binärdateien bestehen aus Datensätzen mit einer festen
Struktur und einer festen Länge.
Sie sind damit für Direktzugriffe geeignet, vorausgesetzt, das
Speichermedium, auf dem sie sich befinden, gestattet die dazu erforderlichen
Positionierungen.
Binärdateien sind auch sequentiell lesbar.
Turbo Pascal
Deklaration einer Dateivariablen
VAR f : FILE OF typ;
f steht hier als Bezeichner für eine Dateivariable.
typ bezeichnet einen Datentyp. Hinsichtlich des angebbaren
Datentyps bestehen Einschränkungen, nicht möglich sind zum
FILE ...
Bindung der Dateivariablen an einen Dateinamen
Assign(f, dateiname);
AssignFile(f, dateiname); { zusätzlich in Delphi }
f ist eine Dateivariable, dateiname eine Zeichenkette, die
den Namen einer Datei benennt.
dateiname muß den Konventionen des Betriebssystems
entsprechen.
Der Aufruf von Assign löst keinen Zugriff auf das Dateisystem
aus.
Assign ist eine vordefinierte Prozedur.
Nach der Bindung von f an den Dateinamen richten sich alle
weiteren Operationen, die auf f Bezug nehmen, solange an die
benannte Datei, bis f durch einen weiteren Aufruf von Assign
eine andere externe Datei zugeordnet wird.
Eine Datei darf zur gleichen Zeit nicht mehrfach geöffnet sein.
Eröffnen einer exitierenden Datei zum Lesen und/oder Modifizieren
Reset(f);
f ist eine Dateivariable, die an einen Dateinamen gebunden sein
muß.
Die bezeichnete Datei muß existieren. Dies wird durch Zugriff auf das
Dateisystem geprüft.
Der Positionszeiger zeigt auf den Dateianfang.
Die Datensatzlänge ist durch typ bestimmt.
Es sind sowohl Lese- als auch Schreibzugriffe auf die Datei zulässig.
Reset ist eine vordefinierte Prozedur.
Eröffnen einer Datei, die neu erstellt wird
Rewrite(f);
f ist eine Dateivariable, die an einen Dateinamen gebunden sein
muß.
Die Datei wird neu angelegt. Dies gilt auch dann, wenn zuvor bereits eine
Datei mit dem angegebenen Namen existiert, d.h. diese Datei wird
komplett überschrieben.
Der Positionszeiger zeigt auf den Dateianfang.
Die Datensatzlänge ist durch typ bestimmt.
Es sind sowohl Lese- als auch Schreibzugriffe auf die Datei zulässig.
Rewrite ist eine vordefinierte Prozedur.
Abfrage des Positionszeigers
Eof(f); { Dateiende ? }
FilePos(f); { Wert des Positionszeigers }
Eof und FilePos sind vordefinierte Funktionen, Eof
liefert einen Wert vom Typ BOOLEAN, FilePos einen Wert vom Typ
LONGINT.
f ist eine Dateivariable, die an einen Dateinamen gebunden sein
muß. Die Datei muß geöffnet sein.
Eof (end of file) prüft, ob der Positionszeiger auf dem
Dateiende steht.
Liefert FilePos den Wert 0, so steht der Positionszeiger am
Dateianfang.
Der Positionszeiger liefert die Nummer eines Datensatzes.
Setzen des Positionszeigers
Seek(f, n);
f ist eine Dateivariable, die an einen Dateinamen gebunden sein
muß. Die Datei muß geöffnet sein.
Der Dateizeiger wird auf die Position n gesetzt. Die erste angebbare
Position ist 0. Wird n mit dem Wert FileSize(f)
(Anzahl der Datensätze in der Datei) belegt, so wird der Positionszeiger
hinter den letzten Datensatz gesetzt.
Ermittlung der Dateigröße
FileSize(f);
FileSize ist eine vordefinierte Funktion, die einen Wert vom Typ
LONGINT liefert.
f ist eine Dateivariable, die an einen Dateinamen gebunden sein
muß. Die Datei muß geöffnet sein.
Die Dateigröße gibt die Anzahl der Datensätze an, die sich in der Datei
befinden.
Die Größe der Datei in Byte ergibt aus der Anzahl der Datensätze
multipliziert mit dem Speicherplatzbedarf für einen Datensatz.
Lesen aus einer typisierten Binärdatei
Read(f, var);
f ist eine Dateivariable, die an einen Dateinamen gebunden sein
muß. Die Datei muß geöffnet sein.
var ist eine Variable mit dem Datentyp typ. Diese Variable
übernimmt den Inhalt des Datensatzes als Wert, auf den der Positionszeiger
zeigt.
Der Positionszeiger wird anschließend auf den nächsten Datensatz gesetzt.
Schreiben in eine typisierte Binärdatei
Write(f, var);
f ist eine Dateivariable, die an einen Dateinamen gebunden sein
muß. Die Datei muß geöffnet sein.
var ist eine Variable mit dem Datentyp typ. Der Datensatz
wird mit dem Wert der Variablen belegt, auf den der Positionszeiger
zeigt.
Der Positionszeiger wird anschließend auf den nächsten Datensatz
gesetzt.
Verkürzen einer Datei
Truncate(f);
f ist eine Dateivariable, die an einen Dateinamen gebunden sein
muß. Die Datei muß geöffnet sein.
Es werden alle Datensätze ab der Position aus der Datei entfernt, auf
die der Positionszeiger zeigt.
Schließen der Datei
Close(f);
CloseFile(f); { zusätzlich in Delphi }
f ist eine Dateivariable, die an einen Dateinamen gebunden sein
muß.
Auf die geschlossene Datei sind keine weiteren Operationen möglich,
solange sie nicht erneut eröffnet wird.
P. Böhme, 02.09.1995