|
Die Funktion FileExists: Prüfen, ob eine Datei existiert
|
|
Die Definition gemäß Delphi-Hilfe
|
function FileExists(const FileName: string): Boolean;
Beschreibung
FileExists gibt True zurück, wenn die im Parameter FileName angegebene Datei vorhanden ist. Existiert die Datei nicht, wird False zurückgegeben.
|
|
Kommentar
|
nicht erforderlich
|
|
Was macht diese Funktion?
|
Sie überprüft das Vorhandensein einer Datei. Dies ist besonders wichtig bei der Dateiverarbeitung. Wird auf eine nicht vorhandene Datei lesend zugegriffen, würde es sonst zu Fehlern kommen.
|
|
Beispiele:
|
entfällt
|
|
|
|
|
Die Prozedur AssignFile: Einer Datei-Variablen eine Datei zuweisen
|
|
Die Definition gemäß Delphi-Hilfe
|
procedure AssignFile(var F; FileName: string);
Beschreibung
Mit AssignFile können Sie eine Dateivariable initialisieren. F ist eine Dateivariable eines beliebigen Dateityps. FileName enthält einen Ausdruck des Typs String bzw. Pchar (wenn die erweiterte Syntax aktiviert ist).
Nach dem Aufruf von AssignFile ist F der externen Datei zugeordnet, bis F wieder geschlossen wird.
Enthält der der Parameter FileName keinen Wert, wird F die Standardeingabe oder Standardausgabe zugewiesen. Wenn Sie F ein leeren String zuweisen, verweist F nach dem Aufruf Reset (F) auf die Standardeingabe und nach dem Aufruf Rewrite (F) auf die Standardausgabe.
Verwenden Sie AssignFile auf keinen Fall für eine bereits geöffnete Dateivariable.
Hinweis
Zur Vermeidung von Gültigkeitsbereichskonflikten ersetzt AssignFile die in früheren Versionen von Delphi verwendete Prozedur Assign. Diese ist jedoch aus Gründen der Abwärtskompatibilität noch vorhanden.
|
|
Kommentar
|
- Strings sind die herkömmlichen Pascal-Zeichenketten. PChar sind Zeiger auf Zeichenketten, die etwas anders behandelt werden.
- Standardeingabe ist üblicherweise die Tastatur. Die Standardausgabe i.d.R. der Monitor. Diese Art der Dateiverarbeitung findet gelegentlich bei Konsolen-Anwendungen statt. Dies soll aber hier nicht behandelt werden.
|
|
Was macht diese Prozedur?
|
Es geht darum, dass einer externen Datei im Programm eine Variable zugeordnet wird. Alle weiteren Zugriffe auf diese Datei erfolgen dann über diese Variable. Die Datei wird im Parameter “FileName” übergeben. Wird kein Verzeichnis angegeben, geht die Prozedur davon aus, dass die Datei im selben Verzeichnis wie das Programm ist.
|
|
Beispiele
|
entfällt
|
|
|
|
|
Die Prozedur Reset: Eine existierende Datei zum Lesen und Schreiben öffnen
|
|
Die Definition gemäß Delphi-Hilfe
|
procedure Reset(var F [: File; RecSize: Word ] );
Beschreibung
Reset öffnet die mit F angegebene externe Datei. Ist keine Datei mit diesem Namen vorhanden, tritt ein Fehler auf. Ist F bereits offen, wird sie zuerst geschlossen und dann erneut geöffnet. Nach dem Öffnen wird der Dateizeiger an den Anfang der Datei gesetzt.
F ist eine Variable eines beliebigen Dateityps, die zuvor mit AssignFile einer externen Datei zugewiesen wurde. Der optionale Ausdruck RecSize kann nur bei nicht typisierten Dateien verwendet werden und gibt die Datenblockgröße für das Lesen und Schreiben der Datei an. Wird RecSize nicht angegeben, wird der Standardwert 128 verwendet.
Wird F ein leerer String zugewiesen (z.B. AssignFile(F, '')), zeigt die Variable nach dem Aufruf von Reset auf die Standardeingabedatei.
Bei einer Textdatei ist F nach dem Öffnen schreibgeschützt.
Nach dem Aufruf von Reset hat Eof(F) den Wert True, wenn die Datei leer ist. Andernfalls ist Eof(F) False.
Hinweis
Mit dem Compiler-Schalter {$I+} können Laufzeitfehler durch Exceptions behandelt werden. Wird {$I–} verwendet, muß explizit mit IOResult auf E/A-Fehler geprüft werden.
|
|
Kommentar
|
- Da es hier um typisierte Dateien geht, ist die Angabe von RecSize nicht zulässig.
- Standardeingabe ist üblicherweise die Tastatur. Diese Art der Dateiverarbeitung findet gelegentlich bei Konsolen-Anwendungen statt. Dies soll aber hier nicht behandelt werden.
- Textdateien werden hier nicht behandelt
- Man kann die sogenannten E/A-Fehler direkt behandeln. Durch das Exception-Handling (Try..Except) ist das aber nicht erforderlich.
|
|
Was macht diese Prozedur?
|
Mit AssignFile wird einer externen Datei eine Datei-Variable zugeordnet. Mit Reset wird dann diese Datei zum Lesen und Schreiben geöffnet. Solange das nicht passiert ist, kann man nicht viel mit der Datei-Variablen anfangen.
|
|
Beispiele
|
entfällt
|
|
|
|
|
Die Prozedur Rewrite: Eine nicht-existierende Datei zum Lesen und Schreiben öffnen
|
|
Die Definition gemäß Delphi-Hilfe
|
procedure Rewrite(var F: File [; Recsize: Word ] );
Beschreibung
Rewrite erstellt eine neue externe Datei unter dem F zugewiesenen Namen.
F ist eine Variable eines beliebigen Dateityps, die zuvor mit AssignFile einer externen Datei zugewiesen wurde. Der optionale Ausdruck RecSize kann nur bei nicht typisierten Dateien verwendet werden und gibt die Datenblockgröße für das Lesen und Schreiben der Datei an. Wird RecSize nicht angegeben, wird der Standardwert 128 verwendet.
Ist schon eine gleichnamige externe Datei vorhanden, wird sie gelöscht und an ihrer Stelle die neue Datei angelegt.
Ist F bereits offen, wird sie zuerst geschlossen und dann erneut erstellt. Nach dem Erstellen wird der Dateizeiger an den Anfang der leeren Datei gesetzt.
Wird F ein leerer String zugewiesen (z.B. AssignFile(F, '')), zeigt die Variable nach dem Aufruf von Rewrite auf die Standardausgabedatei.
Bei einer Textdatei ist F nach dem Öffnen schreibgeschützt.
Nach dem Aufruf von Rewrite hat Eof(F) immer den Wert True.
Hinweis
Mit dem Compiler-Schalter {$I+} können Laufzeitfehler durch Exceptions behandelt werden. Wird {$I–} verwendet, muß explizit mit IOResult auf E/A-Fehler geprüft werden.
|
|
Kommentar
|
- Da es hier um typisierte Dateien geht, ist die Angabe von RecSize nicht zulässig.
- Wird Rewrite auf eine vorhandene Datei angewendet, wird diese gelöscht!
- Die Standardausgabe i.d.R. der Monitor. Diese Art der Dateiverarbeitung findet gelegentlich bei Konsolen-Anwendungen statt. Dies soll aber hier nicht behandelt werden.
- Man kann die sogenannten E/A-Fehler direkt behandeln. Durch das Exception-Handling (Try..Except) ist das aber nicht erforderlich.
|
|
Was macht diese Prozedur?
|
Mit AssignFile wird einer externen Datei eine Datei-Variable zugeordnet. Mit Rewrite wird dann diese Datei zum Schreiben geöffnet. Solange das nicht passiert ist, kann man nicht viel mit der Datei-Variablen anfangen. Eine vorhandene Datei wird automatisch gelöscht, wenn Rewrite aufgerufen wird.
|
|
Beispiele
|
enfällt
|
|
|
|
|
Die Prozedur CloseFile: Eine geöffnete Datei schließen
|
|
Die Definition gemäß Delphi-Hilfe
|
procedure CloseFile(var F);
Beschreibung
CloseFile ersetzt wegen Namenskonflikten die Borland Pascal-Prozedur Close. Verwenden Sie anstelle von Close die Prozedur CloseFile, um die Zuordnung zwischen einer Dateivariablen und einer externen Datei zu beenden.
F ist eine Dateivariable eines beliebigen Typs, die zuvor mit Reset, Rewrite oder Append geöffnet wurde. Die F zugeordnete externe Datei wird vollständig aktualisiert und anschließend geschlossen, wodurch das Datei-Handle für die erneute Verwendung freigegeben wird.
Hinweis
Mit dem Compiler-Schalter {$I+} können Laufzeitfehler durch Exceptions behandelt werden. Wenn Sie {$I-} verwenden, müssen Sie mit IOResult explizit auf E/A-Fehler prüfen.
|
|
Kommentar
|
- Die Verbindung zwischen Datei-Variable und physischer Datei muss kontrolliert beendet werden. Ansonsten kann es zu Zugriffsproblemen bei der Datei kommen.
- Man kann die sogenannten E/A-Fehler direkt behandeln. Durch das Exception-Handling (Try..Except) ist das aber nicht erforderlich.
|
|
Was macht diese Prozedur?
|
Die Prozedur beendet die Verbindung zwischen der Datei-Variablen und der physischen Datei. Würde das nicht gemacht, bliebe ein soganntes Handle auf die Datei im Speicher. Dadurch ist die Datei für weitere Zugriffe gesperrt.
|
|
Beispiele
|
entfällt
|
|
|
|
|
Die Funktion FileSize: "Dateigröße" einer typisierten Datei
|
|
Die Definition gemäß Delphi-Hilfe
|
function FileSize(var F): Integer;
Beschreibung
Mit FileSize können Sie die Größe der angegebenen Datei (F) ermitteln. Die Funktion kann nur für geöffnete Dateien verwendet werden. Wenn die Datei leer ist, gibt FileSize(F) 0 zurück.
Hinweis
FileSize kann nicht für Textdateien verwendet werden.
|
|
Kommentar
|
Diese Funktion gibt nicht die Dateigröße einer Datei als Ergebnis zurück. Sie gibt die Anzahl der Records zurück. Wenn ein Record eine Größe von 200 Byte und in der Datei 3 Records gespeichert sind, so gibt die Funktion als Wert 3 zurück. Die Dateigröße ist aber 600 Byte. Anders wäre es, wenn die Recordgröße genau ein Byte wäre. Dann wären die Werte identisch.
|
|
Was macht diese Prozedur?
|
Die Funktion liefert die Anzahl der Records in der Datei zurück.
|
|
Beispiele
|
entfällt
|
|
|
|
|
Die Funktion FilePos: Position in einer typisierten Datei
|
|
Die Definition gemäß Delphi-Hilfe
|
function FilePos(var F): Longint;
Beschreibung
Mit FilePos können Sie die aktuelle Position in der angegebenen geöffneten Datei ermitteln. Befindet sich der Dateizeiger am Anfang der Datei, wird 0 zurückgegeben. Ansonsten gibt FilePos den Byte-Offset der aktuellen Position vom Dateianfang zurück.
Diese Funktion kann nicht für geschlossene oder Textdateien verwendet werden.
Hinweis
Mit dem Compiler-Schalter {$I+} können Laufzeitfehler durch Exceptions behandelt werden.Wird {$I-}, verwendet, muß explizit mit IOResult auf E/A-Fehler geprüft werden.
|
|
Kommentar
|
- Wichtig: Es wird bei “0” angefangen zu zählen! Wenn FilePos und FileSize miteinander vergliche werden, muss das bedacht werden.
- Man kann die sogenannten E/A-Fehler direkt behandeln. Durch das Exception-Handling (Try..Except) ist das aber nicht erforderlich.
|
|
Was macht diese Prozedur?
|
Sie liefert die Position eines Records in der Datei zurück.
|
|
Beispiele
|
entfällt
|
|
|
|
|
Die Prozedur Read: Ein Element der typisierten Datei lesen
|
|
Die Definition gemäß Delphi-Hilfe
|
Typisierte Dateien:
procedure Read(F , V1 [, V2,...,Vn ] );
Beschreibung
Read kann auf folgende Arten verwendet werden:
Bei typisierten Dateien wird eine Dateikomponente in eine Variable eingelesen.
|
|
Kommentar
|
entfällt
|
|
Was macht diese Prozedur?
|
Sie liest einen oder mehrere Records aus der Datei in die entsprechende(n) Record-Variablen ein. Nachdem ein Record gelesen wurde, ist die Position in der Datei hinter diesem Record.
|
|
Beispiele
|
enfällt
|
|
|
|
|
Die Prozedur Write: Ein Element der typisierten Datei schreiben
|
|
Die Definition gemäß Delphi-Hilfe
|
procedure Write(F, V1,...,Vn);
Beschreibung
Write schreibt eine Datei in eine Dateikomponente. F ist eine Dateivariable und jedes V eine Variable mit dem Typ der in F angegebenen Komponente. Nach jedem Schreiben einer Variablen wird der Dateizeiger auf die nächste Komponente gesetzt. Befindet sich der Dateizeiger bereits am Dateiende (Eof(F) liefert True), wird die Datei vergrößert.
|
|
Kommentar
|
Natürlich wird nicht die Datei in die Dateikomponente geschrieben, sondern genau ungekehrt.
|
|
Was macht diese Prozedur?
|
Irgendwie muss man die Daten ja in die Datei bekommen. Genau das macht man mit dieser Prozedur. Nachdem ein Record geschrieben wurde, ist die aktuelle Date-Position hinter diesem Record.
|
|
Beispiele
|
entfällt
|
|
|
|
|
Die Prozedur Seek: An eine Stelle der typisierten Datei "springen”
|
|
Die Definition gemäß Delphi-Hilfe
|
procedure Seek(var F; N: Longint);
Beschreibung
Mit Seek kann eine geöffnete typisierte oder nichttypisierte Datei auf eine bestimmte Position gesetzt werden. Der Positionszeiger der Datei F wird auf die Komponente mit der Nummer N gesetzt. Die erste Komponente in einer Datei hat immer die Nummer 0.
F ist eine typisierte oder nichttypisierte Dateivariable und N ein Ausdruck des Typs Longint.
Um eine Datei zu vergrößern, geben Sie beim Aufruf von Seek eine Komponente hinter der letzen Komponente in der Datei an. Das bedeutet, daß die Anweisung Seek(F, FileSize(F)) den Positionszeiger an das Dateiende setzt.
Hinweis
Mit dem Compiler-Schalter {$I+} können Laufzeitfehler durch Exceptions behandelt werden. Wird {$I–} verwendet, muß explizit mit IOResult auf E/A-Fehler geprüft werden.
|
|
Kommentar
|
- Man kann die sogenannten E/A-Fehler direkt behandeln. Durch das Exception-Handling (Try..Except) ist das aber nicht erforderlich.
|
|
Was macht diese Prozedur?
|
Oft muss man bei typisierten Dateien an den Anfang, ans Ende, einen Record zurück oder einen Record weiter gehen. Mit Seek ist das möglich.
|
|
Beispiele
|
Seek(F, FilePos(F)-1)
|
So geht man einen Record zurück. Angenommen man liest einen Record ein, um ihn zu bearbeiten, muss man den Datei-Zeiger wieder auf den Anfang dieses Records setzen, um die Änderungen an die richtige Stelle der Datei schreiben zu können.
|
|
|
|
Die Funktion EOF: Ende der Datei (End Of File)
|
|
Die Definition gemäß Delphi-Hilfe
|
function Eof(var F): Boolean;
Für Textdateien:
function Eof [ (var F: Text) ]: Boolean;
Beschreibung
Eof prüft, ob die aktuelle Dateiposition mit dem Dateiende identisch ist. F ist eine Dateivariable. Fehlt dieser Parameter, wird die Standardvariable Input verwendet.
Eof(F) gibt True zurück, wenn sich die aktuelle Dateiposition hinter dem letzten Zeichen der Datei befindet oder wenn die Datei leer ist. Andernfalls wird False zurückgegeben.
|
|
Kommentar
|
entfällt
|
|
Was macht diese Prozedur?
|
Wenn man neue Records anfügen will, ist es wichtig, dass man am Datei-Ende steht. Ansonsten überschreibt man andere Daten. Mit Eof stellt man dieses fest.
|
|
Beispiele
|
enfällt
|
|