Textdatei einlesen Delphi

...komplette Frage anzeigen

3 Antworten

FILE NOT FOUND: Die Datei ist fuer dein Programm unter diesem Pfad nicht erreichbar erreichbar.

Bei Windows7 sind diese Pfade geschuetzt und werden vlt umgeleitet. Gib mal im Explorer in der Addresszeile diesen Pfad ein. Das ist immer nen guter Test.

Hart kodierte Pfade sind aber generell ein Problem. Leg erstmal die Dateien neben deine Exe und greif so zB auf die erste Datei zu:

IncludeTrailingBackslash(ExtractFilePath(Application.ExeName)) + 'howmutch.txt'

Weiterhin macht deine for Schleife keinen Sinn. Die läuft von 1 bis 0, also gar nicht.

Und du solltest Textfile nicht mehr benutzen. Das ist veraltet. Die kann zB keine Unix oder Mac Dateien einlesen. Welche Delphi Version hast du denn. Komfortabel geht es mit den Methoden aus der IOUtils unit. Z.B. liest die Methode TFile.ReadAllLines alle Zeilen in ein String-Array über welches du mit for line in array zeilenweise rüberlaufen kannst.

Wenn du damit nicht weiterkommst, dann frag.

gruss, dj

Du resettest auch f1 und liest dann aus f aus... da muss vorher noch ein reset(f) kommen ;-) allerdings kommt das FileNotFound auch nur, wenn die Datei wirklich nicht existiert...

if FileExists('C:\Users\Public\Documents\howmutch.txt') then

wäre das richtige für Dich. Aber ich würde das ganze schnell und einfach über eine Stringlist lösen:

Am besten wäre folgendes:

uses objects,dialogs;

var
  a:TStringlist;
begin
  a := TStringlist.Create;
  if FileExists('C:\Users\Public\Documents\definitionsliste.txt') then
    a.LoadFromFile('C:\Users\Public\Documents\definitionsliste.txt');
  ShowMessage(IntToStr(a.Count) + ' Zeilen in Datei gefunden!');
  a.Free;
end;

damit hättest Du dann den Inhalt und kannst mit

a.text

auf den kompletten String zugreifen bzw. mit

a.Count

auf die Anzahl der Zeilen aus der Datei. Bedenke aber, das das dann wieder nur für eine bestimmte größe an dateien sinnvoll ist. Ansonsten müsste man wirklich mit einer Schleife und Readln arbeiten, aber dann bitte mit einer While- Schleife in Verbindung mit EOF(f) um zu prüfen, ob das ende der Datei erreicht ist, so mit kannst Du Dir auf jeden Fall die datei "howmuch" sparen ;-)

Viele GRüße

Was möchtest Du wissen?