![]() |
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 ! ![]() Ich möchte aber nur eine bestimmte Zeile auslesen. |
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:
der Rest bleibt Gleich.
i := 0;
while not eof(f) and (i < Zeilennummer)do inc(i); .. Deine Zeilennumer ist dann die die du haben willst. wenn deine TXT file so viele zeilen hat. anderfalls wird die Letzte Zeile zurückgegeben. |
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...
|
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:
Aufruf z.B.
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;
Delphi-Quellcode:
Hoffe geholfen zu haben,
Edit1.Text := LeseZeileAusDatei('c:\meinedatei.txt', 14); // Zeile Nr. 14 auslesen
SCRaT //EDIT: Source nochmal etwas umgeschrieben... |
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:
Die Funktion von Scart funktioniert super !
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;
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: |
Re: Texte aus .txt auslesen aber nur eine bestimmte Zeile
Zitat:
Zitat:
|
Re: Texte aus .txt auslesen aber nur eine bestimmte Zeile
Zitat:
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 |
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; |
Re: Texte aus .txt auslesen aber nur eine bestimmte Zeile
Zitat:
|
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 ![]() Grüße Klaus |
Re: Texte aus .txt auslesen aber nur eine bestimmte Zeile
Unter Unix gibt es ein Programm namens tail.
Damit kann man die letzten x Zeilen einer beliebig grossen Datei abrufen. Selbst wenn die Datei viele Gigabyte hat, geht das in Null komma nix. Das funktioniert so: Man öffnet die Datei, springt ans Ende und dann 4 kByte zurück und liest diesen 4kByte Block ein. Dann braucht man nur noch im Block rückwärts die Zeilenumbrüche zu zählen. Sollte in dem Block nicht genügend Zeilenumbrüche vorhanden sein, liest man solange einen weiteren Block ein, bis die Anzahl der Zeilenumbrüche vorhanden ist. > Für TextFiles findest Du TextSeek hier. Das taugt nicht für Windows. Es werden INT 21 Aufrufe verwendet. |
Re: Texte aus .txt auslesen aber nur eine bestimmte Zeile
Hallo zusammen und Danke für die Erklärung!
nun möchte ich auch mit dem Befehl loadformfile ausprobieren. ich bekomme diese Meldung Undeclared loadformfile . Was soll ich in Bereich uses schreiben?
Delphi-Quellcode:
uses, ...?
procedure TForm1.Button1Click(Sender: TObject); begin ListBox1.Items.LoadFormFile('test.txt'); end; end. |
Re: Texte aus .txt auslesen aber nur eine bestimmte Zeile
Form und From verwechsel ich auch gerne mal :mrgreen:
|
Re: Texte aus .txt auslesen aber nur eine bestimmte Zeile
Moin, Moin,
@Klaus: Ist dass jetzt (ein gelungener!) Scherz? Der Link ist ja wirklich interessant, aber welche Sprach ist das? Russisch? Gruß |
Re: Texte aus .txt auslesen aber nur eine bestimmte Zeile
Zitat:
Delphi-Quellcode:
_____ _____ _ _ _____ _____
/ ___| | _ \ | | | | / ___/ / ___/ | | | |_| | | | | | | |___ | |___ | | _ | _ / | | | | \___ \ \___ \ | |_| | | | \ \ | |_| | ___| | ___| | \_____/ |_| \_\ \_____/ /_____/ /_____/ |
Re: Texte aus .txt auslesen aber nur eine bestimmte Zeile
Zitat:
hier ist die Übersetzung :
Delphi-Quellcode:
From: Alexeev Vlad <
[email]Vlad@zik.rcupi.e-burg.su[/email] > Subject: Position in the text- sirloin! Date: 12 Jul 1994 05:09:38 -0000 organization: Ugtu-upi > how do you do. Privetik! > arose problemka: > necessary to be moved in the text file from programki on TP > for reading of the lines > necessary at the given moment to make this necessarily without closing of file > moreover Seek there not working: ( > someone can advise? But your poblemka exists already long ago, here module for its solution... With respect Vlad. --- Alexeev Vlad e-burg.su; |
Re: Texte aus .txt auslesen aber nur eine bestimmte Zeile
bei memo und Listbox funktioniert super
aber so geht nicht
Delphi-Quellcode:
wieso?
"Edit1.Text.LoadFromFile('test.txt');"
|
Re: Texte aus .txt auslesen aber nur eine bestimmte Zeile
Hast Du schon mal die Hilfe zu Rate gezogen und geschaut was für ein Typ TEdit.text ist.
Dann solltest Du dir Deine Frage selber beantworten können. Grüße Klaus |
Re: Texte aus .txt auslesen aber nur eine bestimmte Zeile
Hallo
die einfache Lösung ist so :
Delphi-Quellcode:
var aStringList : TStrings;
begin aStringList := TStringList.Create(); aStringList.LoadFromFile('test.txt'); Edit1.Text := aStringList[2]; end; end. |
Re: Texte aus .txt auslesen aber nur eine bestimmte Zeile
Zitat:
Zu jedem .Create gehört ein .Free. Schreib also viuelleicvht einfach noch ganz ans Ende:
Delphi-Quellcode:
aStringlist.Free
|
Re: Texte aus .txt auslesen aber nur eine bestimmte Zeile
Als ich ihm das Codestück in einem anderen Thread präsentiert habe, war das Free noch drin :stupid:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:24 Uhr. |
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