Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Readln vs. Stringlist Brauche hilfe pls


baer_en - Fr 25.04.08 13:43
Titel: Readln vs. Stringlist Brauche hilfe pls
Hallo,

ich bin gerade für die FOS-Prüfung in delphi fleißig am lernen und hab ma ne kleine frage:
Ich bin gerade am rätseln wo mein Fehler liegt...
Wenn ich aus einer Datei einzelne Zeilen auslesen und in eine Stinglist speichern will bringt der compiler einen fehler!
Quelltext:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
procedure TForm1.Button1Click(Sender: TObject);
var addresse,line : string;
        i : integer;
        sl : TStringlist;
begin

sl.Create;
i:= 0;
addresse := ed_addresse.text;
assignfile(datei,addresse);
reset(datei);

while eof(datei) <> true do
begin
readln(datei,line);
sl.add(line);
memo1.lines.add(sl[i]);
i:=i+1;

end;

sl.free;
closefile(datei);  //Nach dieser Zeile springt er zur Fehlermeldung!

       
end;



Quelltext
1:
2:
Fehler :
'access violation at 0x004044b2: read of address 0xfffffffc'. Prozeß angehalten.

Ausserdem steht in der Variable line das richtige drin nur die sl beinhaltet () laut compiler!


Danke für Hilfe schonmal.
Gruß baer

Moderiert von user profile iconGausi: Delphi-Tags hinzugefügt


jakobwenzel - Fr 25.04.08 13:58

Warum er erst nach dem Closefile die Fehlermeldung bringt, weiß ich nicht, der Fehler liegt aber hier:

Quelltext
1:
sl.Create;                    

Richtig sieht diese Zeile so aus:

Delphi-Quelltext
1:
sl:=TStringList.Create;                    


Wofür brauchst du eigentlich diese StringList?

Abgesehen davon kannst du mit Memo1.Lines.LoadFromFile den Dateiinhalt viel einfacher ins Memo kriegen.


baer_en - Fr 25.04.08 14:10

Danke für deine Hilfe das war die Lösung ...
Was eine Zeile an Nerven kosten kann :)

Die umständliche Art war nur als Lerneffekt gedacht um mehrere Komponenten zu benutzen!

Danke schoen