Einzelnen Beitrag anzeigen

franz

Registriert seit: 23. Dez 2003
Ort: Bad Waldsee
112 Beiträge
 
Delphi 5 Professional
 
#12

Re: Buchstabe aus einer Zeile auslesen

  Alt 3. Jan 2004, 22:36
@Luckie

Das ist leider nur die halbe Wahrheit. AssignFile weißt nur einer Dateivariablen eine Datei zu. Die Datei muss auch noch geöffnet (Reset) und natürlich auch wieder geschlossen (CloseFile) werden. Außerdem muss neben der Dateivariablen noch eine weitere deklariert werden, die den Wert von ReadLn aufnehmen kann. ReadLn ist keine Funktion! Wenn die Datei abgearbeitet werden soll ist zusätzlich noch ein EOF (End of file) nötig.

Delphi-Quellcode:
var S: String;
    mFile: TextFile;
begin
  AssignFile(mFile,'Dateiname'); // Datei zuweisen
  Reset(mFile); // Datei öffnen
  try
    Readln(mFile,S); // Erste Zeile der Datei lesen
    while not Eof(mFile) do // Datei abarbeiten
      begin
        Application.ProcessMessages; // Windows Botschaftenwarteschleife abarbeiten

        // Quelltext für die Verarbeitung des übergebenen Strings hier einfügen. Der String wurde an S übergeben.

        Readln(mFile,S); // Nächste Zeile lesen
      end;
    
    // Quelltext für die Verarbeitung des letzten übergebenen Strings hier einfügen. Der Einsatz einer Prozedur kann hilfreich sein.

  finally
    CloseFile(mFile); // Datei schließen. Wenn die Datei nicht geschlossen wird, ist sie erst wieder nach einem Windowsneustart verfügbar!
  end;
end;
Das ist noch ein einfaches Beispiel. Wenn die Datei mehrere abzuarbeitende sogenannte Sections hat, habe ich schon einmal mehr als 400 Zeilen Programmcode gebraucht. Der Einsatz von TIniFile kam bei dieser Datei nicht in Frage, da die Datei sowohl Sections mit eckigen, als auch mit runden Klammern hatte.

Zumindest funktioniert das so bei Delphi 5. Eine Stringliste hat allerdings den Nachteil, dass sie nicht viel mehr als 32.000 Zeilen enthalten darf, da sonst der Fehler auftritt, dass eine Zeile nicht eingefügt werden kann. An was das liegt weiß ich auch nicht. Entweder an der Arbeitsspeichergröße oder aus einem anderen Grund.

P. S. Da dies nicht mehr zum Thema passt, kannst du dieses dementsprechend verschieben und einen Link von dieser Seite aus einfügen?
  Mit Zitat antworten Zitat