Einfach ausgedrückt ist eine Datei eine binäre Sequenz. In Delphi gibt es drei Dateiklassen: getippt, Text und untypisiert. Typisierte Dateien sind Dateien, die Daten eines bestimmten Typs enthalten, z. B. Double, Integer oder einen zuvor definierten benutzerdefinierten Datensatztyp. Textdateien enthalten lesbare ASCII-Zeichen. Untypisierte Dateien werden verwendet, um einer Datei die geringstmögliche Struktur aufzuerlegen.
Während Textdateien aus Zeilen bestehen, die mit einer CR / LF-Kombination (# 13 # 10) abgeschlossen sind, typisierte Dateien bestehen aus Daten, die aus einer bestimmten Art von Datenstruktur stammen.
Die folgende Deklaration erstellt beispielsweise einen Datensatztyp namens TMember und ein Array von TMember-Datensatzvariablen.
Art
TMember = Aufzeichnung
Name : Zeichenfolge[50];
Zeichenfolge[30];
Ende;
var Mitglieder: Array[1… 50] von TMember;
Bevor wir die Informationen auf die Festplatte schreiben können, müssen wir eine Variable eines Dateityps deklarieren. Die folgende Codezeile deklariert eine F-Dateivariable.
var F: Datei von TMember;
Hinweis: Um eine typisierte Datei in Delphi zu erstellen, verwenden wir die folgende Syntax:
var SomeTypedFile: Datei von SomeType
Der Basistyp (SomeType) für eine Datei kann ein skalarer Typ (z. B. Double), ein Array-Typ oder ein Datensatztyp sein. Es sollte sich nicht um eine lange Zeichenfolge, ein dynamisches Array, eine Klasse, ein Objekt oder einen Zeiger handeln.
Um mit Delphi-Dateien arbeiten zu können, müssen wir eine Datei auf einer Festplatte mit einer Dateivariablen in unserem Programm verknüpfen. Um diesen Link zu erstellen, müssen wir verwenden AssignFile Verfahren zum Verknüpfen einer Datei auf einer Festplatte mit einer Dateivariablen.
AssignFile (F, 'Members.dat')
Sobald die Zuordnung zu einer externen Datei hergestellt ist, muss die Dateivariable F 'geöffnet' werden, um sie für das Lesen und Schreiben vorzubereiten. Wir rufen die Rücksetzprozedur auf, um eine vorhandene Datei zu öffnen, oder schreiben um, um eine neue Datei zu erstellen. Wenn ein Programm die Verarbeitung einer Datei abgeschlossen hat, muss die Datei mit der CloseFile-Prozedur geschlossen werden. Nach dem Schließen einer Datei wird die zugehörige externe Datei aktualisiert. Die Dateivariable kann dann einer anderen externen Datei zugeordnet werden.
Im Allgemeinen sollten wir immer die Ausnahmebehandlung verwenden. Beim Arbeiten mit Dateien können viele Fehler auftreten. Beispiel: Wenn wir CloseFile für eine Datei aufrufen, die bereits geschlossen ist, meldet Delphi einen E / A-Fehler. Wenn wir hingegen versuchen, eine Datei zu schließen, aber noch nicht AssignFile aufgerufen haben, sind die Ergebnisse unvorhersehbar.
Angenommen, wir haben eine Reihe von Delphi-Mitgliedern mit ihren Namen, E-Mails und der Anzahl der Posts gefüllt und möchten diese Informationen in einer Datei auf der Festplatte speichern. Der folgende Code erledigt die Arbeit:
var
F: Datei von TMember;
Start
AssignFile (F, 'members.dat');
Schreibe neu (F).
Versuchen
zum j: = 1 zu 50 tun
Schreiben Sie (F, Mitglieder [j]);
schließlich
CloseFile (F);
Ende;Ende;
Um alle Informationen aus der Datei 'members.dat' abzurufen, verwenden wir den folgenden Code:
var
Mitglied: TMember
F: Datei von TMember;Start
AssignFile (F, 'members.dat');
Setze zurück (F).
Versuchen
während nicht Eof (F) fange doch an
Lesen (F, Mitglied);
DoSomethingWithMember;
Ende;
schließlich
CloseFile (F);
Ende;Ende;
Hinweis: Eof ist die EndOfFile-Prüffunktion. Wir verwenden diese Funktion, um sicherzustellen, dass wir nicht versuchen, über das Ende der Datei hinaus (über den zuletzt gespeicherten Datensatz hinaus) zu lesen..
Auf Dateien wird normalerweise nacheinander zugegriffen. Wenn eine Datei mit der Standardprozedur Lesen oder Schreiben mit der Standardprozedur Schreiben gelesen wird, springt die aktuelle Dateiposition zur nächsten numerisch geordneten Dateikomponente (nächster Datensatz). Auf typisierte Dateien kann auch nach dem Zufallsprinzip über die Standardprozedur Seek zugegriffen werden, bei der die aktuelle Dateiposition auf eine bestimmte Komponente verschoben wird. Das FilePos und Dateigröße Mit Funktionen können die aktuelle Dateiposition und die aktuelle Dateigröße ermittelt werden.
zurück zum Anfang - die erste Aufzeichnung
Suche (F, 0);
gehe zum 5. Datensatz
Suche (F, 5);
Zum Ende springen - "nach" dem letzten Datensatz
Suche (F, Dateigröße (F));
Sie haben gerade gelernt, wie man das gesamte Mitgliederfeld schreibt und liest, aber was ist, wenn Sie nur nach dem 10. Mitglied suchen und die E-Mail ändern möchten? Das nächste Verfahren macht genau das:
Verfahren Ändern Sie die E-Mail(const RecN: Integer; const Neue e-mail : Zeichenfolge);var DummyMember: TMember;Start
Zuweisen, Öffnen, Ausnahmebehandlungsblock
Suche (F, RecN);
Read (F, DummyMember);
DummyMember.Email: = NewEMail;
Lies bewegt sich zum nächsten Datensatz, wir müssen
Suche (F, RecN);
Write (F, DummyMember);
Datei schließenEnde;
Jetzt haben Sie alles, was Sie brauchen, um Ihre Aufgabe zu erfüllen. Sie können die Informationen der Mitglieder auf die Festplatte schreiben, sie zurücklesen und sogar einige Daten (z. B. E-Mails) in der "Mitte" der Datei ändern.
Wichtig ist, dass diese Datei keine ASCII-Datei ist. So sieht es im Editor aus (nur ein Datensatz):
.Delphi Guide g Ò5 · ¿ì. 5… B V.Lƒ, „¨[email protected]Ï… ç.ç.ï…