Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Texte aus .txt auslesen aber nur eine bestimmte Zeile (https://www.delphipraxis.net/99328-texte-aus-txt-auslesen-aber-nur-eine-bestimmte-zeile.html)

taktaky 10. Sep 2007 20:04


Texte aus .txt auslesen aber nur eine bestimmte Zeile
 
Hallo

mit dem Code kann man die ganze Inhalt in der Datei .txt auslesen
Ich möchte aber dies nicht in Memo oder ListBox importieren sondern in Edit (Einzelzeile)
wenn ich den Code verwende, wird die letzte Zeile ausgelsen !

Der Code ist da

Ich möchte aber nur eine bestimmte Zeile auslesen.

Corpsman 10. Sep 2007 20:07

Re: Texte aus .txt auslesen aber nur eine bestimmte Zeile
 
oh man

da steht while not eof(f) do

und du machst daraus einfach nur
Delphi-Quellcode:
i := 0;
while not eof(f) and (i < Zeilennummer)do
inc(i);
..
der Rest bleibt Gleich.

Deine Zeilennumer ist dann die die du haben willst.

wenn deine TXT file so viele zeilen hat. anderfalls wird die Letzte Zeile zurückgegeben.

Nikolas 10. Sep 2007 20:08

Re: Texte aus .txt auslesen aber nur eine bestimmte Zeile
 
Dann lese nicht, solange die Datei noch nicht zu Ende ist, sondern bis du deine Datei gefunden hast. Also entweder einen Zähler mitlaufen lassen oder nach dem lesen überprüfen ob es deine Zeile ist. Vielleicht solltest du dich etwas mit programmiertechnischen Grundlagen auseinandersetzen, bevor du anfängst mit virtuellen Laufwerken durch die Gegend zu werfen, wenn du da noch keine Zeile verstehst, oder Ahnung von Programmierlogik hast...

scrat1979 10. Sep 2007 20:12

Re: Texte aus .txt auslesen aber nur eine bestimmte Zeile
 
Hab mal folgendes für Dich geschrieben, muß evtl. angepasst werden, das Prinzip dürfte aber klar sein...

Delphi-Quellcode:
Function LeseZeileAusDatei(Dateiname : String; Zeile : Integer) : String;
VAR Zeilen : TStringList;
Begin
  Zeilen := TStringList.Create;
  Zeilen.LoadFromFile(Dateiname); // Evtl. hier noch Fehlerbehandlung wenn Datei nicht gefunden...
  Try // Falls nicht vorhandene Zeile angegeben wurde....
    Result := Zeilen[Zeile-1];
  Except
    Result := '';
  End;
  Zeilen.Free;
End;
Aufruf z.B.

Delphi-Quellcode:
 Edit1.Text := LeseZeileAusDatei('c:\meinedatei.txt', 14); // Zeile Nr. 14 auslesen
Hoffe geholfen zu haben,

SCRaT

//EDIT: Source nochmal etwas umgeschrieben...

taktaky 10. Sep 2007 21:02

Re: Texte aus .txt auslesen aber nur eine bestimmte Zeile
 
Hallo Corpsman

also wenn ich deinen Vorschlag nehme, dann bekomme ich immer nur die 1. Zeile !!!
Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var i:Integer;
begin
         AssignFile(Datei,'test.txt');
         //AssignFile(Datei,'c:\text.txt');
         Reset(Datei);
         i := 0;
while not eof(datei) and (i = 5)do
inc(i);
         //while not eof (Datei) do
         begin
                ReadLn(Datei,namedat);
                Edit2.Text:=namedat;
                ListBox1.Items.Add(namedat);
               //ListBox1.Items.Add(namedat + ' nicht erreichbar');
                //CloseFile(Datei);
         end;
end;
Die Funktion von Scart funktioniert super !
Delphi-Quellcode:


  _____        ___   __   _   _   _    _____ 
|  _  \     /   | |  \ | | | | / /  | ____| 
| | | |    / /| | |   \| | | |/ /   | |__   
| | | |   / / | | | |\   | | |\ \   |  __| 
| |_| |  / /  | | | | \  | | | \ \  | |___ 
|_____/ /_/   |_| |_|  \_| |_|  \_\ |_____|
Nun möchte ich dass beim Fehler wie z.B. die Datei nicht Vorhanen, ... Keine Meldung erscheint
es soll nichts passieren und bleibt die Zeile leer. :gruebel:

Muetze1 11. Sep 2007 06:43

Re: Texte aus .txt auslesen aber nur eine bestimmte Zeile
 
Zitat:

Zitat von taktaky
also wenn ich deinen Vorschlag nehme, dann bekomme ich immer nur die 1. Zeile !!!

Willst du dich nicht langsam mal damit beschäftigen anstatt nur Copy&Paste? Was macht er denn in der While Schleife laut dem Code? Welche Befehle greifen auf die Datei zu und tut er dies auch in der Schleife? Wie könnte er in die 5. Zeile kommen?

Zitat:

Zitat von taktaky
Nun möchte ich dass beim Fehler wie z.B. die Datei nicht Vorhanen, ... Keine Meldung erscheint
es soll nichts passieren und bleibt die Zeile leer. :gruebel:

Steht in der Hilfe genauso wie hier im Forum. Ansonsten: neue Frage neuer Thread - was bei der Frage aber unnötig sein sollte...

Klaus01 11. Sep 2007 07:42

Re: Texte aus .txt auslesen aber nur eine bestimmte Zeile
 
Zitat:

Zitat von taktaky
Nun möchte ich dass beim Fehler wie z.B. die Datei nicht Vorhanen, ... Keine Meldung erscheint
es soll nichts passieren und bleibt die Zeile leer. :gruebel:

Guten Morgen,

dann solltest Du den Fehler abfangen.
Hierzu kannst du try except verwenden oder IOResult auswerten.

Viel Spaß beim probieren, denn nur der Versuch macht klug.

Grüße
Klaus

Corpsman 11. Sep 2007 07:52

Re: Texte aus .txt auslesen aber nur eine bestimmte Zeile
 
hossa,

wie hier schon einige geschrieben haben , ist es sehr schlecht einfach einen Code zu Copieren ohne dessen Funktion zu verstehen.


Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var i:Integer;
begin
         AssignFile(Datei,'test.txt');
         //AssignFile(Datei,'c:\text.txt');
         Reset(Datei);
         i := 0;
while not eof(datei) and (i = 5)do
// inc(i); <-- hier ist die While die i auf 5 setzt und Endet
(*
Dieser Block wird dann nach der While aufgerufen und kann natürlich nur 1 mal die 1. Zeile Lesen
*)
         //while not eof (Datei) do
         begin
inc(i); // <-- so wäre es Richtig gewesen.
                ReadLn(Datei,namedat);
                Edit2.Text:=namedat;
                ListBox1.Items.Add(namedat);
               //ListBox1.Items.Add(namedat + ' nicht erreichbar');
                //CloseFile(Datei);
         end;
end;

Zacherl 11. Sep 2007 08:05

Re: Texte aus .txt auslesen aber nur eine bestimmte Zeile
 
Zitat:

Zitat von Klaus01
Zitat:

Zitat von taktaky
Nun möchte ich dass beim Fehler wie z.B. die Datei nicht Vorhanen, ... Keine Meldung erscheint
es soll nichts passieren und bleibt die Zeile leer. :gruebel:

Guten Morgen,

dann solltest Du den Fehler abfangen.
Hierzu kannst du try except verwenden oder IOResult auswerten.

Viel Spaß beim probieren, denn nur der Versuch macht klug.

Grüße
Klaus

Allerdings ist das "verschlucken" einer Fehlermeldung keinesfalls sinnvoll ..

Klaus01 11. Sep 2007 08:06

Re: Texte aus .txt auslesen aber nur eine bestimmte Zeile
 
Guten Morgen,

ich nochmal, wie Du vielleicht weißt gibt es für datensatzorientierte Dateien
die Funktion Seek um zu einem bestimmten Datensatz zu springen.

Für TextFiles findest Du TextSeek hier.

Grüße
Klaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:50 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz