Einzelnen Beitrag anzeigen

Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#5

Re: Einfaches Abspeichern in externer Datei // Schülerverwal

  Alt 23. Sep 2009, 11:55
Hallo Jan,

die wichtigste Antwort hat Dir wohl Klaus schon gegeben:
Delphi-Quellcode:
while not eof(f) do
         begin
           read(f, Datensatz[i]);
           inc(i);
         end;
Bei Deiner Lösung (for i:=0 to 99999....) hast immer das Problem, daß eine teilweise beschädigte Datei das Lesen unmöglich macht.

Mir behagt die Definition des records nicht
Delphi-Quellcode:
  tSNr = string[5];
  tName = string[20];
  tVorname = string[15];
  tGebDat = string[10];
  tGebOrt = string[15];
  tOrt = string[15];
  tKlasse = string[4];

  tSchueler = record
        Nr :tSNr; //Schuelernummer bzw. Datensatznummer
        Name :tName; //Schuelername
        Vorname :tVorname; //Schuelervorname
        Geburtsort :tGebOrt; //Geburtsort
        GebDat :tGebDat; //Geburtsdatum
        Ort :tOrt; //Wohnort
        Klasse :tKlasse; //Klasse
  end;
Ich würde mit fixen Satzlängen arbeiten:

Delphi-Quellcode:
  tSNr = Array of Char[1..5];
  tName = Array of Char[1..20];
  tVorname = Array of Char[1..15];
  tGebDat = Array of Char[1..10];
  tGebOrt = Array of Char[1..15];
  tOrt = Array of Char[1..15];
  tKlasse = Array of Char[1..4];

  tSchueler = record
        Nr :tSNr; //Schuelernummer bzw. Datensatznummer
        Name :tName; //Schuelername
        Vorname :tVorname; //Schuelervorname
        Geburtsort :tGebOrt; //Geburtsort
        GebDat :tGebDat; //Geburtsdatum
        Ort :tOrt; //Wohnort
        Klasse :tKlasse; //Klasse
  end;
Wobei allerdings ein leerer Datensatz und ein mit Leerzeichen gefüllter Datensatz nicht zu unterscheiden wären.
(Ok da kann man noch eine #0 als Begrenzer einsetzen, verliert aber ein Datenzeichen)

Wenn Du dann noch ein #13#10 als Abschluß Deines Records hinein packst, ist die Datei problemlos mit jedem Editor les- und kontrollierbar.

Gruß
K-H
  Mit Zitat antworten Zitat