• Aucun résultat trouvé

Dateiein und -ausgabe

Dans le document Object Pascal Sprachreferenz (Page 165-168)

Die folgende Tabelle enthält die Ein- und Ausgaberoutinen.

Tabelle 8.1 Ein- und Ausgaberoutinen

Routine Beschreibung

Append Öffnet eine vorhandene Textdatei zum Anhängen von Daten.

AssignFile Weist einer Dateivariablen den Namen einer externen Datei zu.

BlockRead Liest einen oder mehrere Blöcke aus einer untypisierten Datei.

BlockWrite Schreibt einen oder mehrere Blöcke in eine untypisierte Datei.

ChDir Wechselt das aktuelle Verzeichnis.

CloseFile Schließt eine geöffnete Datei.

Eof Gibt den EOF-Status einer Datei zurück.

Eoln Gibt den Zeilenende-Status einer Textdatei zurück.

Erase Löscht eine externe Datei.

Jede Variable vom Typ File ist eine Dateivariable. Es gibt drei Klassen von Dateien:

typisierte Dateien, untypisierte Dateien und Textdateien. Die Syntax für Dateitypen fin-den Sie unter »Dateitypen« auf Seite 5-26.

Bevor eine Dateivariable verwendet werden kann, muß sie durch einen Aufruf der Prozedur AssignFile einer externen Datei zugeordnet werden. Eine externe Datei ist entweder eine Datei auf einem Laufwerk oder ein Gerät (beispielsweise die Tastatur oder der Bildschirm). Die externe Datei speichert Informationen oder stellt sie zur Verfügung.

Nachdem die Zuordnung zu einer externen Datei hergestellt wurde, muß die Datei-variable geöffnet werden, um Ein- oder Ausgaben zu ermöglichen. Eine vorhandene Datei kann mit der Prozedur Reset geöffnet werden. Mit der Prozedur Rewrite wird eine neue Datei erzeugt und geöffnet. Textdateien, die mit der Prozedur Reset geöff-net wurden, erlauben nur Lesezugriffe. Textdateien, die mit Rewrite oder Append ge-öffnet wurden, erlauben nur Schreibzugriffe. Typisierte und untypisierte Dateien er-lauben Lese- und Schreibzugriffe, unabhängig davon, ob sie mit Reset oder Rewrite geöffnet wurden.

FilePos Gibt die aktuelle Position in einer typisierten oder untypisierten Datei zurück.

FileSize Gibt die aktuelle Größe einer Datei zurück (nicht für Textdateien).

Flush Leert den Puffer einer Ausgabe-Textdatei.

GetDir Gibt das aktuelle Verzeichnis eines bestimmten Laufwerks zurück.

IOResult Gibt einen Integer-Wert zurück, der den Status der zuletzt durchgeführ-ten E/A-Operation angibt.

MkDir Legt ein Unterverzeichnis an.

Read Liest einen oder mehrere Werte aus einer Datei in eine oder mehrere Va-riablen.

Readln Wie Read, positioniert aber anschließend den Dateizeiger auf den Anfang der nächsten Zeile der Textdatei.

Rename Benennt eine externe Datei um.

Reset Öffnet eine vorhandene Datei.

Rewrite Erzeugt und öffnet eine neue Datei.

RmDir Entfernt ein leeres Unterverzeichnis.

Seek Setzt den Dateizeiger in einer typisierten oder untypisierten Datei auf die angegebene Position (nicht bei Textdateien).

SeekEof Gibt den EOF-Status einer Textdatei zurück.

SeekEoln Gibt den Zeilenende-Status einer Textdatei zurück.

SetTextBuf Weist einer Textdatei einen E/A-Puffer zu.

Truncate Schneidet eine typisierte oder untypisierte Datei an der aktuellen Positi-on ab.

Write Schreibt einen oder mehrere Werte in eine Datei.

Writeln Wie Write, schreibt aber anschließend ein Zeilenendezeichen in die Text-datei.

Tabelle 8.1 Ein- und Ausgaberoutinen (Fortsetzung)

Routine Beschreibung

Jede Datei enthält eine lineare Folge von Komponenten, die alle dem Komponenten-typ (oder dem Record-Typ) der Datei entsprechen. Jeder Komponente ist eine Num-mer zugeordnet. Die erste Komponente einer Datei hat die NumNum-mer 0.

Normalerweise erfolgt der Dateizugriff sequentiell, d.h. beim Lesen einer Kompo-nente mit Hilfe der Standardprozedur Read oder beim Schreiben mit Hilfe der Stan-dardprozedur Write wird der Dateizeiger auf die nächste Komponente positioniert.

Auf typisierte und untypisierte Dateien können Sie jedoch auch wahlfrei zugreifen, indem Sie die Standardprozedur Seek verwenden, die den Dateizeiger von der aktu-ellen zur angegebenen Position verschiebt. Mit den Standardfunktionen FilePos und FileSize können Sie die aktuelle Position des Dateizeigers und die aktuelle Größe der Datei ermitteln.

Nach der Bearbeitung durch das Programm muß die Datei mit der Standardprozedur CloseFile geschlossen werden. Nach dem Schließen wird die entsprechende externe Datei aktualisiert. Die Dateivariable kann dann einer anderen externen Datei zuge-ordnet werden.

In der Voreinstellung werden sämtliche Aufrufe von Standard-E/A-Routinen auf Fehler überprüft. Beim Auftreten eines Fehlers wird eine Exception ausgelöst (wenn keine Exception-Behandlung aktiviert ist, wird das Programm abgebrochen). Die au-tomatische Überprüfung kann mit Hilfe der Compiler-Direktiven {$I+} und {$I–} ein- und ausgeschaltet werden. Wenn die E/A-Prüfung ausgeschaltet ist (d.h. wenn eine Routine im Status {$I–} compiliert wird), löst ein E/A-Fehler keine Exception aus. In diesem Fall muß zur Überprüfung des Ergebnisses einer E/A-Operation die Stan-dardfunktion IOResult aufgerufen werden.

IOResult sollte auch dann aufgerufen werden, wenn der aufgetretene Fehler für das Programm nicht weiter von Bedeutung ist. Wenn Sie den Aufruf unterlassen, schlägt der nächste Aufruf einer E/A-Funktion im Status {$I+} fehl.

Textdateien

Dieser Abschnitt behandelt E/A-Operationen mit Dateivariablen vom Standardtyp Text.

Beim Öffnen einer Datei vom Typ Text wird die externe Datei als Folge von Zeichen interpretiert, die in Form von Zeilen vorliegen. Am Ende jeder Zeile steht ein Zeilen-endezeichen (das Zeichen für Wagenrücklauf, eventuell gefolgt vom Zeichen für ei-nen Zeilenvorschub). Der Typ Text unterscheidet sich vom Typ File of Char.

Für Textdateien gibt es besondere Formen der Prozeduren Read und Write, mit denen Sie Werte lesen und schreiben können, die nicht vom Typ Char sind. Die Werte wer-den automatisch in ihre Zeichendarstellung übersetzt. Die Prozedur Read(F, I) liest beispielsweise eine Folge von Ziffern, interpretiert sie als dezimale Integer und spei-chert sie in I (wobei I vom Typ Integer ist).

Als Standard-Textdateivariablen sind Input und Output definiert. Input ermöglicht nur Lesezugriffe und ist der Standard-Eingabedatei des Betriebssystems (normaler-weise die Tastatur) zugeordnet. Output ermöglicht nur Schreibzugriffe und ist der Standard-Ausgabedatei des Betriebssystems (normalerweise der Bildschirm)

zuge-ordnet. Input und Output werden vor der Ausführung eines Programms automatisch geöffnet. Dies entspricht der Ausführung folgender Anweisungen:

AssignFile(Input, '');

Reset(Input);

AssignFile(Output, '');

Rewrite(Output);

Hinweis Textorientierte E/A-Operationen sind nur in Konsolenanwendungen verfügbar, also in Anwendungen, die entweder mit der Option Textbildschirm-Anwendung (Register-karte Linker im Dialogfeld Projektoptionen) oder mit der Befehlszeilenoption -cc com-piliert wurden. In einer GUI-Anwendung verursacht jede Lese- oder Schreiboperati-on mit Input oder Output einen E/A-Fehler.

Nicht allen Standard-E/A-Routinen, die mit Textdateien arbeiten, muß explizit eine Dateivariable als Parameter übergeben werden. Wenn der Parameter fehlt, wird stan-dardmäßig Input oder Output verwendet, je nachdem, ob die Prozedur oder Funktion eingabe- oder ausgabeorientiert ist. Read(X) entspricht beispielsweise Read(Input, X), und Write(X) entspricht Write(Output, X).

Eine Datei, die einer Ein- oder Ausgaberoutine für Textdateien übergeben wird, muß zuvor mit AssignFile einer externen Datei zugeordnet und mit Reset, Rewrite oder Append geöffnet werden. Wenn Sie eine mit Reset geöffnete Datei an eine ausgabeori-entierte Prozedur oder Funktion übergeben, wird eine Exception ausgelöst. Gleiches gilt, wenn Sie eine mit Rewrite oder Append geöffnete Datei an eine eingabeorientierte Routine übergeben.

Dans le document Object Pascal Sprachreferenz (Page 165-168)