Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi letzte Zeile einer Textdatei lesen (https://www.delphipraxis.net/121296-letzte-zeile-einer-textdatei-lesen.html)

CADdy 25. Sep 2008 08:44


letzte Zeile einer Textdatei lesen
 
Hallo allemiteinander,

in eine Textdatei werden jeden Tag zwei Datums/Zeitwerte nebeneinander geschrieben. Für jeden Tag gibt es also eine Zeile.
Beispiel:
22.09.2008 08:23:47 22.09.2008 19:13:09

Ich möchte nun immer die letzte komplette Zeile (also die mit zwei Datums/Zeitwerten) auslesen. Mir fehlt der zündende Gedanke, wie ich das am besten mache. Die Textdatei jedesmal von vorne bis zum EOF lesen finde ich nicht gut, da die Datei ja immer länger wird.

Hat jemand einen Tipp für mich?

Danke und servus
Peter

Union 25. Sep 2008 08:47

Re: letzte Zeile einer Textdatei lesen
 
Am ressourcenschonendsten und schnellsten geht es wohl, wenn Du ans Dateiende gehst und rückwärts liest bis ein EOL oder der Dateianfang gefunden wird. Wenn die Zeilen immer eine konstante Länge haben kannst Du die Startposition auch errechnen.

CADdy 25. Sep 2008 09:11

Re: letzte Zeile einer Textdatei lesen
 
Danke für die schnelle Antwort.

Wenn ich vom EOF zum EOL zurückgehe, könnte aber doch auch eine "halbe" Zeile, also eine mit nur einem Datums/Zeitwert gefunden werden. Gut, so eine Zeile wäre kürzer, da komplette Zeilen immer gleich lang sind.

Servus
Peter

Union 25. Sep 2008 09:13

Re: letzte Zeile einer Textdatei lesen
 
Ja dann müsstest Du die erste Methode verwenden und das Gelesene entsprechend prüfen.

p80286 25. Sep 2008 09:38

Re: letzte Zeile einer Textdatei lesen
 
Hallo Peter,

wenn es wirklich so ist wie Du schreibst, (text-Dateien entwickeln da manchmal ein Eigenleben!)
dann geh doch ungefähr so vor:
lies die letzten (Satzlänge+2)*2 Bytes in einen puffer;
suche das erste CRLF ;
das sollte auf (gelesenebytes/2)-2 liegen, wenn nicht, ist der letzte Satz nicht vollständig und Du gehst zurück bis CRLF.
Dort fängt der vorletzte Satz an.

Gruß
K-H

CADdy 30. Sep 2008 09:24

Re: letzte Zeile einer Textdatei lesen
 
Vielen Dank für Eure Tipps. Ich war ein paar Tage nicht online, deswegen meine Mail erst heute.

Servus
Peter


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