@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?