Entwickler-Ecke

Dateizugriff - gezielt zeilen aus text datei auslesen


chrisbie - Mo 19.01.04 18:58
Titel: gezielt zeilen aus text datei auslesen
ich möchte mit delphi gezielt eine zeile aus einer textdatei auslenen.
wie kann ich das machen?


Anonymous - Mo 19.01.04 19:04

Am einfachsten gehts wohl mit TStringList:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
function ReadLine(filename: string; line: integer): string;
begin
 with TStringList.Create do
 try
  LoadFromFile(filename);
  if count <= line then
   result := Strings[line]
  else
   result := ''
 finally
  free; 
 end;
end;


(ungetestet)


derDoc - Mo 19.01.04 19:04

Datei in StringList (StringList ist der Bezeichner) laden.

Delphi-Quelltext
1:
StringList.LoadFromFile('C:\MirEgal.txt');                    

Mit StringList.Strings[4] (5. Zeile) darauf zugreifen.

//Edit: Zu langsam


Anonymous - Mo 19.01.04 19:06

wieso über die umwege und wieso ein stringlist missbrauchen...

Zitat:
Die Prozedur Readln liest eine Textzeile aus einer Datei.


gruß

ixtreme.de


Delete - Mo 19.01.04 19:09

Schön, aber wenn du an die 3269 Zeile willst, musst du erst alle 3268 Zeilen vorher auslesen. ;)


Anonymous - Mo 19.01.04 19:12

ja aber davon stand ja nichts in der frage!

gruß

ixtreme.de


Anonymous - Mo 19.01.04 19:41
Titel: Re: gezielt zeilen aus text datei auslesen
chrisbie hat folgendes geschrieben:
ich möchte mit delphi gezielt eine zeile aus einer textdatei auslenen.


Da steht aber auch nicht "Wie kann ich gezielt Zeile 1 auslesen"


Anonymous - Mo 19.01.04 19:46

ne aber auch bei 10 von 100 zeilen wäre es noch annehmbarer...

gruß

ixtreme.de


Brueggendiek - Mo 19.01.04 22:49

Hallo Leute!

Die Readln-Methode ist aus meiner Sicht deshalb vorzuziehen, weil nur die Zeilen bis zur Gewünschten geladen werden müssen.

Bei einer Stringlist wird die ganze Datei in den RAM kopiert - auch Zeile 2589, wo doch nur Zeile 1234 gebraucht wurde. Deshalb dauert die Stringlist-Variante abhängig von der Größe der Datei (mit überproportionaler Verlängerung, wenn Windows den Hauptspeicher auf die Platte schreiben muß), bei der Readln-Variante aber abhängig von der Position der gesuchten Zeile (normalerweise ohne Hauptspeicher-Auslagerung, da ja immer nur 1 Zeile im RAM ist - sinnvolle Zeilenlängen stark unterhalb 1MB vorausgesetzt).

Gruß

Dietmar Brüggendiek


hansa - Di 20.01.04 02:21

Haa, wenigstens auf Brueggendiek ist noch Verlass. Nichts von wegen: in Zeile 2-10 von 50.000 ist irgendwas, aber wo genau ? Na, dann lese ich eben alle 50.000 und hole durch Verwendung von succ usw. wieder 0.0001 Sek. von 10.000 wieder rein. 8)


Delete - Di 20.01.04 12:23

wer sagt denn dass er nur ein mal eine Zeile braucht?. Braucht er später noch mal eine, fängt er wieder von vorne an die Datei zu lesen. ;)


hansa - Di 20.01.04 13:02
Titel: Re: gezielt zeilen aus text datei auslesen
chrisbie hat folgendes geschrieben:
ich möchte mit delphi gezielt eine zeile aus einer textdatei auslenen.
wie kann ich das machen?


Wenn ich das wörtlich nehme, dann besser readln. Ansonsten (z.B. wiederholtes Suchen, überwiegend am Ende der Datei suchen) hat Luckie natürlich Recht. Den Fragesteller scheints sowieso nicht mehr zu jucken. :mrgreen:


Anonymous - Di 20.01.04 13:59

ich denke mal das ist jetzt auch egal, wir haben die möglichkeiten aufgezählt, soll er sich die beste (für sein Projekt) raussuchen...

Gruß

ixtreme.de


chrisbie - Di 20.01.04 16:15

danke für die hilfe


G-man - Di 20.01.04 16:25

Ich weiß jetzt nicht genau, wofür du das lesen einer Textdatei brauchst,
aber du kannst, wenn es sich um eine Datei handelt, in der du Einstellungen speicherst, auch eine Ini-Datei benutzen, dazu findest du hier schon einen Haufen Fragen zu...