Computerwissenschaften

Erstellen Sie eine Datenbank mit Delphis Datei mit typisierten Dateien

Einfach ausgedrückt ist eine Datei eine Binärsequenz irgendeiner Art. In Delphi gibt es drei Klassen von Dateien. typisiert, 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. Nicht typisierte Dateien werden verwendet, wenn einer Datei die geringstmögliche Struktur auferlegt werden soll.

 

Eingegebene Dateien

Während Textdateien aus Zeilen bestehen, die mit einer CR / LF- Kombination ( Nr. 13 Nr. 10. abgeschlossen sind, bestehen typisierte Dateien aus Daten, die einer bestimmten Art von Datenstruktur entnommen wurden .

Die folgende Deklaration erstellt beispielsweise einen Datensatztyp namens TMember und ein Array von TMember-Datensatzvariablen.


 Art

 

   TMember=Datensatz

 

 Name: Zeichenfolge [50];

Email :

Zeichenfolge [30];

Beiträge: LongInt;

Ende ;

 

var Members: 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 Skalartyp (wie Double), ein Array-Typ oder ein Datensatztyp sein. Es sollte keine lange Zeichenfolge, kein dynamisches Array, keine Klasse, kein Objekt oder kein Zeiger sein.

Um mit Dateien aus Delphi 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 die AssignFile- Prozedur verwenden, um eine Datei auf einer Festplatte einer Dateivariablen zuzuordnen .


 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 Reset-Prozedur auf, um eine vorhandene Datei zu öffnen, oder Rewrite, um eine neue Datei zu erstellen. Wenn ein Programm die Verarbeitung einer Datei abgeschlossen hat, muss die Datei mithilfe 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 bereits geschlossene Datei aufrufen, meldet Delphi einen E / A-Fehler. Wenn wir dagegen versuchen, eine Datei zu schließen, AssignFile jedoch noch nicht aufgerufen haben, sind die Ergebnisse unvorhersehbar.

 

In eine Datei schreiben

Angenommen, wir haben eine Reihe von Delphi-Mitgliedern mit ihren Namen, E-Mails und der Anzahl der Beiträge 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;

i: ganze Zahl;

Start

 

  AssignFile (F, 'members.dat');

 

  Schreibe um (F);

 

  Versuchen

 

   für j:=1 bis 50 tun

 

Schreiben (F, Mitglieder [j]);

 

  endlich

 

   CloseFile (F);

 

  Ende ; Ende ;

 

Aus einer Datei lesen

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');

 

  Zurücksetzen (F);

 

  Versuchen

 

   während nicht Eof (F) beginnen

 

Lesen (F, Mitglied);

 

{DoSomethingWithMember;}

 

   Ende ;

 

endlich

 

   CloseFile (F);

 

  Ende ; Ende ;

Hinweis: Eof ist die EndOfFile-Überprüfungsfunktion. Wir verwenden diese Funktion, um sicherzustellen, dass wir nicht versuchen, über das Ende der Datei hinaus (über den zuletzt gespeicherten Datensatz hinaus) zu lesen.

 

Suchen und Positionieren

Auf Dateien wird normalerweise nacheinander zugegriffen. Wenn eine Datei mit der Standardprozedur gelesen oder mit der Standardprozedur Write gelesen oder geschrieben wird, wird die aktuelle Dateiposition zur nächsten numerisch geordneten Dateikomponente (nächster Datensatz) verschoben. Auf typisierte Dateien kann auch zufällig über die Standardprozedur Seek zugegriffen werden, bei der die aktuelle Dateiposition auf eine bestimmte Komponente verschoben wird. Mit den Funktionen FilePos und FileSize können Sie die aktuelle Dateiposition und die aktuelle Dateigröße ermitteln.


 {gehe zurück zum Anfang - der erste Datensatz}

 

 Suche (F, 0);

 


 

 {Gehe zum 5. Datensatz}

 

 Suche (F, 5);

 


 

 {Zum Ende springen - "nach" dem letzten Datensatz}

 

 Suche (F, Dateigröße (F));

 

Ändern und aktualisieren

Sie haben gerade gelernt, wie man die gesamte Gruppe von Mitgliedern schreibt und liest, aber was ist, wenn Sie nur das 10. Mitglied suchen und die E-Mail ändern möchten? Das nächste Verfahren macht genau das:


 Prozedur ChangeEMail ( const RecN: Ganzzahl; const NewEMail: Zeichenfolge ); var DummyMember: TMember; Start

 

  {Zuweisungs-, Öffnungs-, Ausnahmebehandlungsblock}

 

  Suche (F, RecN);

 

  Read (F, DummyMember);

 

  DummyMember.Email:=NewEMail;

 

  {read bewegt sich zum nächsten Datensatz, wir müssen

 gehe zurück zum ursprünglichen Datensatz und schreibe dann}

  Suche (F, RecN);

 

  Write (F, DummyMember);

 

  {Datei schließen} end ;

Aufgabe erledigen

Das war’s – jetzt haben Sie alles, was Sie brauchen, um Ihre Aufgabe zu erfüllen. Sie können Mitgliederinformationen auf die Festplatte schreiben, sie zurücklesen und sogar einige der Daten (z. B. E-Mail) in der „Mitte“ der Datei ändern.

Wichtig ist, dass diese Datei keine ASCII-Datei ist. So sieht sie im Editor aus (nur ein Datensatz):


.Delphi Guide g Ò5 · ¿ì. 5 .. B V.Lƒ, „¨[email protected]Ï .. ç.ç.ï ..

Similar Posts

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.