Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Zeilenweises Lesen einer TXT-Datei? (https://www.delphipraxis.net/31847-zeilenweises-lesen-einer-txt-datei.html)

HaCkAttaCk2001 14. Okt 2004 18:34


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.

Gruber_Hans_12345 14. Okt 2004 18:37

Re: Zeilenweises Lesen einer TXT-Datei?
 
Delphi-Quellcode:
ChecklistBox1.Items.LoadFromFile('c:\meintextfile.txt');

HaCkAttaCk2001 14. Okt 2004 18:43

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.

HaCkAttaCk2001 14. Okt 2004 18:54

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.

_Sebastian_ 14. Okt 2004 19:07

Re: Zeilenweises Lesen einer TXT-Datei?
 
guck dir mal Hier im Forum suchenAssignfile und Hier im Forum suchenReadln an.
Dannn kannste die datei zeilenweise auslesen und unten an die listbox anhängen.
Listbox.Items.add müsste das sein.

HaCkAttaCk2001 15. Okt 2004 17:15

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:
    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;
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 :-| .


C ya.

Nikolas 15. Okt 2004 17:20

Re: Zeilenweises Lesen einer TXT-Datei?
 
Delphi-Quellcode:
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;
in (1) hängst du die neue Zeile an die letzten dran und gibt's nachher alle Zeilen. Das müsste eigentlich so aussehen:
// 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.

Gruber_Hans_12345 15. Okt 2004 17:21

Re: Zeilenweises Lesen einer TXT-Datei?
 
Ich glaub müßte eher so funktionieren ...

Delphi-Quellcode:
    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;
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 ...


Delphi-Quellcode:
var tempSL     : TStringList;
begin
    tempSL     := TStringList.Create;
    tempSL.LoadFromFile(FileName);
    CheckListBox1.AddStrings(tempSL);
    tempSL.Free;

HaCkAttaCk2001 15. Okt 2004 17:29

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.

Gruber_Hans_12345 15. Okt 2004 17:41

Re: Zeilenweises Lesen einer TXT-Datei?
 
Zitat:

Zitat von HaCkAttaCk2001
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.

Was heißt so schnell wie Möglich ?!?

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.
Seite 1 von 2  1 2      

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