Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Textzeile auslesen einer txt datei. (https://www.delphipraxis.net/110295-textzeile-auslesen-einer-txt-datei.html)

youu 16. Mär 2008 11:01


Textzeile auslesen einer txt datei.
 
Hi, habe wohl eher eine der einfacheren Fragen ;)

ich möchte gern eine bestimmte Zeile einer Textdatei auslesen.

Kann mir wer da einen Tipp bzw ein kleines Codebeispiel geben, damit ich es verstehe?

MFG

mkinzler 16. Mär 2008 11:08

Re: Textzeile auslesen einer txt datei.
 
Wie groß ist die Textdatei?
Wenn die Datei nicht all zug roß ist könntest du sie in eine Stringliste laden. Sonst halt klassisch Zeile für Zeile

Pfoto 16. Mär 2008 11:08

Re: Textzeile auslesen einer txt datei.
 
Hallo und willkommen youu!

Es gibt mehrere Arte, ich bevorzuge die
Erstellung einer Instanz von TStringList,
die kann auch laden und speichern.


Also so:
Delphi-Quellcode:
var
  Liste: TStringList;

[...]

Liste:= TStringList.Create;
try
  Liste.LoadFromFile('Dateiname.txt');
  { Hier was mit dem geladenen Text machen }
  ShowMessage(Liste.Text);
finally
  Liste.Free;
end;
Du kannst die einzelnen Zeilen auch mit
Delphi-Quellcode:
Liste.Items[10]:= 'blabla';
einzeln ansprechen.


Gruß
Pfoto

youu 16. Mär 2008 11:12

Re: Textzeile auslesen einer txt datei.
 
Die Textdatei an sich ist sehr klein maximal 10 Zeilen.

funktioniert das mit der TStringlist auch wenn ich z.B 100-200 Textdateien durchsuchen möchte nach bestimmten Wörtern in bestimmten Zeilen?

Denn ich Glaube da wäre der die Ladezeit extrem lange oder?

mkinzler 16. Mär 2008 11:13

Re: Textzeile auslesen einer txt datei.
 
Auch 200 Zeilen stellen keine Hindernis dar.

Corpsman 16. Mär 2008 11:15

Re: Textzeile auslesen einer txt datei.
 
diese Procedure müste das auch machen.

Delphi-Quellcode:
Procedure GetXLine(Filename:String;Line:integer);
var f:Textfile;
    i:Integer;
    s:String;
begin
  result := '';
  assignfile(f,filename);
  reset(f);
  i := 0;
  while(not eof(f)) and (i<=Line) do begin
  inc(i);
  readln(f,s);
  if i = Line then
    result := s;
  end;
  closefile(f);
end;

Klaus01 16. Mär 2008 11:31

Re: Textzeile auslesen einer txt datei.
 
Zitat:

Zitat von Corpsman
diese Procedure müste das auch machen.

Delphi-Quellcode:
Procedure GetXLine(Filename:String;Line:integer);
var f:Textfile;
    i:Integer;
    s:String;
begin
  result := '';
  assignfile(f,filename);
  reset(f);
  i := 0;
  while(not eof(f)) and (i<=Line) do begin
  inc(i);
  readln(f,s);
  if i = Line then
    result := s;
  end;
  closefile(f);
end;

wobei ein Funktion besser wäre, wenn man schon mit Result einen Wert zurückgeben möchte.
Der Kopf würde dann so aussehen.
Delphi-Quellcode:
function GetXLine(FileName:String;Line:integer):String;
Aber Du wolltest doch die Datei nach einer Zeile durchsuchen, oder?
Delphi-Quellcode:
function isLineAvailable(Filename:String;Line:String):Boolean;
var f:Textfile;
    s:String;
begin
  assignfile(f,filename);
  reset(f);
  result := false;
  while(not eof(f)) and (not result) do begin
    readln(f,s);
    result := s = Line;
  end;
  closefile(f);
end;
Grüße
Klaus

youu 16. Mär 2008 11:37

Re: Textzeile auslesen einer txt datei.
 
wollte nicht schauen ob eine Zeile existiert in einer Text Datei, sondern eine bestimmte Zeile komplett auslesen in einer Textdatei.

Ich danke werde mich gleich mal ran setzen und ausprobieren ;)

youu 16. Mär 2008 11:47

Re: Textzeile auslesen einer txt datei.
 
super gerade ausprobiert habs sogar verstanden ;)

Hab es als Funktion dann genommen und alles hat geklappt.

Danke an alle für die schnellen Antworten.

DP-Maintenance 16. Mär 2008 12:54

DP-Maintenance
 
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "Sonstige Fragen zu Delphi" verschoben.
Delphi-Frage


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:25 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