![]() |
Problem mit Laden einer Datei (ReadLn)
Hallo Leute,
bin starkt deprimiert, weil ich immer wieder einen schweren Absturz ernte, wenn ich Zeilen aus einer Datei auslesen will. Mein Lade-Button:
Delphi-Quellcode:
Was mache ich so falsch, daß EAcessViolation "Zugriffverletzung bei Adress Bla Bla" entsteht?
procedure TForm1.btn_ladeClick(Sender: TObject);
var daten: array[1..1000] of string[64]; a : Integer; datei: textfile; begin AssignFile(datei,'e:\string.txt'); reset(datei); while not eof(datei) do begin inc (a); Readln(datei,daten[a]); end; closefile(datei); end; Datei existiert, ist auch nicht offen oder so. Ich will einfach nur jede Zeile dieser Datei in ein String-Array einlesen... Wer kann mir da freundlicherweise helfen? Vielen Dank |
Re: Problem mit Laden einer Datei (ReadLn)
Was für ein wert hat a am Beginn der Schleife?
Ich würde ne stringList zum speichern der Strings nehmen. |
Re: Problem mit Laden einer Datei (ReadLn)
Wie mkinzler schon sagte wäre eine Stringlist besser:
Delphi-Quellcode:
Wenn du aber bei deiner Methode bleiben möchtest, muss a zu beginn der Read-Schleife als Wert den ersten Index des Daten-Arrays tragen, also Low(daten), also 1. :)
var List: TStringList;
begin List := TStringList.Create; List.LoadFromFile(...); end; |
Re: Problem mit Laden einer Datei (ReadLn)
0, weil er die Variable a vor dem Lesen erhöht :wink:
Gruß Hawkeye |
Re: Problem mit Laden einer Datei (ReadLn)
Oh, stimmt :) Habs falschrum gelesen, sorry. Glaub mir nicht, Hawk hat Recht ^^
|
Re: Problem mit Laden einer Datei (ReadLn)
Tatsache ist aber, das der wert in dem geposteten Code nie gesetzt wird.
|
Re: Problem mit Laden einer Datei (ReadLn)
Zitat:
Zitat:
|
Re: Problem mit Laden einer Datei (ReadLn)
Ich auch. ;-)
|
Re: Problem mit Laden einer Datei (ReadLn)
Hallo,
vielen Dank. Ich nehme den Stringlist-Vorschlag dankend an! Hatt alles perfekt funktioniert. Habe aber immer noch nicht verstanden, warum es zu dieser Fehlermeldung kam. Kann das mir einer bitte noch erklären? Vielen Dank |
Re: Problem mit Laden einer Datei (ReadLn)
Vielleicht am n?
|
Re: Problem mit Laden einer Datei (ReadLn)
du meinst alle "n" rauslöschen? :roll:
|
Re: Problem mit Laden einer Datei (ReadLn)
nein abber es auf den Wert 0 setzen, bevor du es benutzt.
Siehe dazu auch schon mehrere Beiträge in diesem Thread ( von mir, Dax, Hawkeye219) |
Re: Problem mit Laden einer Datei (ReadLn)
Hallo,
wie meine "Vorredner" schon sagten, die Variable a muss auf 0 gesetzt werden. Du solltest vielleicht auch einen try/finally-Block einfügen. so z. B.:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var daten: array[1..1000] of string[64]; a : Integer; datei: textfile; begin try AssignFile(datei,'d:\string.txt'); reset(datei); a := 0; while not eof(datei) do begin inc (a); Readln(datei,daten[a]); end; finally closefile(datei); end; end; |
Re: Problem mit Laden einer Datei (ReadLn)
hallo,
hatte es vergessen zu schreiben, aber habe es gleich nach dem ersten Hinweis ausprobiert. Fehlermeldung ist nun eine andere, aber der schwere Absturz bleibt... |
Re: Problem mit Laden einer Datei (ReadLn)
Funktioniert es mit der Abwandlung?
Delphi-Quellcode:
inc (a);
Readln(datei,s); daten[a] := s; |
Re: Problem mit Laden einer Datei (ReadLn)
Liste der Anhänge anzeigen (Anzahl: 1)
Kann es sein, dass deine Textdatei größer ist als dein Array?
Ich hab das mal getestet und dann bekomm ich einen Fehler bei der Bereichsprüfung. Wenn du mal die angehängte Datei als Test-Datei verwendest, dann wirst du merken, dass es bei Array[1..1000] funktioniert, aber bei Array[1..10] nicht mehr. |
Re: Problem mit Laden einer Datei (ReadLn)
Und wieviel Zeilen sind in der Datei? Bei > 1000 knallt es auch...
|
Re: Problem mit Laden einer Datei (ReadLn)
Hallo Kasch,
befolge Markus' ersten Rat und nimm eine TStringList. Die Verwendung des Arrays bringt viele Nachteile mit sich:
Gruß Hawkeye //Edit: 2. Seite übersehen! :oops: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz