Zeilenweises Lesen einer TXT-Datei?
Hi @ all.
Also Fakt ist das ich nicht viel über FileStreams weiß und ich das hier einfach nicht hinbekomme... Ich möchte eine stinknormale TXT-Datei in das Programm einlesen. Dann soll jede einzelne Zeile in eine eigene Zeile einer CheckListBox eingefügt werden. Die Zeilenumbrüche sind selbstverständlich immer ein normales Enter. Edit: Im konkreten Fall habe ich z.b. eine Datei Namens URLs.txt . In der stehen drei Adressen durch Enter separiert: http://www.blabla.de/text1.txt http://www.blabla.de/text1.txt http://www.blabla.de/text1.txt Und diese Zeilen sollen jeweils eine Zeile in einer CheckListBox belegen. Wie realisiere ich das? C ya. |
Re: Zeilenweises Lesen einer TXT-Datei?
Delphi-Quellcode:
ChecklistBox1.Items.LoadFromFile('c:\meintextfile.txt');
|
Re: Zeilenweises Lesen einer TXT-Datei?
Hi.
Es gibt da schon sowas? *omg* und ich verbrenn mir hier die grauen Zellen ^^ . THX ich teste 's gleich mal :D . C ya. |
Re: Zeilenweises Lesen einer TXT-Datei?
Hi.
Es funktioniert ja soweit... das Problem ist nur, dass das was vorher in der CheckListBox stand, verschwindet. Ich glaub stattdessen müsste man da irgendwas mit Insert nehmen. Nur genau dafür gibts wieder keine "Vereinfachung" :-/ . C ya. |
Re: Zeilenweises Lesen einer TXT-Datei?
guck dir mal Assignfile und Readln an.
Dannn kannste die datei zeilenweise auslesen und unten an die listbox anhängen. Listbox.Items.add müsste das sein. |
Re: Zeilenweises Lesen einer TXT-Datei?
Hi.
Ich hab nun ein wenig Code aus der DP und aus der Delphihilfe benutzt, kombiniert und angepasst, aber anstatt mir jede Zeile in einer eigenen Zeile in der CheckBoxList auszugeben, gibt er mir nur die erste Zeile so oft aus, wie das Dokument Zeilen hat :?: Ich hab folgenden Code für das Einlesen vorliegen:
Delphi-Quellcode:
Irgendwie verstehe ich auch warum nur die erste Zeile kommt... woher soll Delphi wissen welche Zeile er nun auslesen soll? Aber irgendwie weiß ich nicht wie ich das vermitteln soll :-| .
AssignFile(F, OpenDialog1.Files[i]);
{$I-} Reset(F); {$I+} if IOResult = 0 then begin while not EOF(F) do begin ReadLn(F, s1); s := s + s1; CheckListBox1.Items.Add(s); end; CloseFile(F); end; C ya. |
Re: Zeilenweises Lesen einer TXT-Datei?
Delphi-Quellcode:
in (1) hängst du die neue Zeile an die letzten dran und gibt's nachher alle Zeilen. Das müsste eigentlich so aussehen:
while not EOF(F) do
begin ReadLn(F, s1); (1) s := s + s1; // Lass die Zeile mal weg CheckListBox1.Items.Add(s); // und schreib hier (sl), dann sollte es laufen. end; // Testdatei: a b c // Deine Ausgabe: a a b a b c . Wie sind denn s und sl deklariert und initialisiert? Vielleicht läuft da was schief. |
Re: Zeilenweises Lesen einer TXT-Datei?
Ich glaub müßte eher so funktionieren ...
Delphi-Quellcode:
aber ich würde es eher mit einer weiteren Stringliste machen, das mit AssignFile kommt mir persönlich schon etwas zu alt vor (kommt ja noch von der DOS Zeit ...) aber ...
AssignFile(F, OpenDialog1.Files[i]);
{$I-} Reset(F); {$I+} if IOResult = 0 then begin while not EOF(F) do begin ReadLn(F, s1); CheckListBox1.Items.Add(sl); end; CloseFile(F); end;
Delphi-Quellcode:
var tempSL : TStringList;
begin tempSL := TStringList.Create; tempSL.LoadFromFile(FileName); CheckListBox1.AddStrings(tempSL); tempSL.Free; |
Re: Zeilenweises Lesen einer TXT-Datei?
Hi.
Erstmal danke an euch beide. CheckListBox1.Items.Add(sl); funktioniert :D . Irgendwie hab ich das selber nicht gesehen... Und zu den Stringlisten... damit hab ich mich noch weniger beschäftigt als mit FileStreams ^^ . Ich glaub ich mach das erstmal mit AssignFile. Obwohl, welche von beiden Methoden ist wohl die schnellere? Assignfile oder StringList? Da das was ich derzeit schreibe so schnell wie möglich funktionieren sollte, wäre es mir recht wenn es 'nen Geschwindigkeitsvorteil gäbe. C ya. |
Re: Zeilenweises Lesen einer TXT-Datei?
Zitat:
Wieviele Zeilen liest du ein (wieviel MB hat die Datei, die du einliest ?) wenn du da um die 100 Zeilen einliest, und nur einmal, dann würde ich nicht schauen, das du den schnellsten Code verwendest, sondern den, der am besten zu lesen / am besten wiederverwendbar ist. Ansonsten wenn du wirklich geschwindigkeitsvorteil haben möchtest, dann würde ich einen TFileStream machen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:41 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz