![]() |
TFilestream immer vollständige Zeilen einlesen
Hallo,
Ich habe eine Textdatei, in der untereinander sehr viele Wörter stehen. Diese will ich nun Blockweise auslesen, der ausgelesene Block darf am Ende aber keine abgeschnittenen Zeilen bzw. Wörter enthalten. (Also das letzte Zeichen des ausgelesenen Blocks sollte immer ein Zeilenumbruch sein) Sollte doch eig. irgendwie mit dem TFileStream und der Methode Seek o.ä möglich sein oder? Danke! |
Re: TFilestream immer vollständige Zeilen einlesen
Das hatten wir gerade: [dp] zeilen zählen[/dp]. Sollte die Datei nicht zu groß sein, wäre eine
![]() |
Re: TFilestream immer vollständige Zeilen einlesen
Ich will ja garnicht die Zeilen zählen, ich will nur, nachdem man einen Block ausgelesen hat, jedes darauf folgende Zeichen solange ausgelsen wird und zum Buffer-String hinzugefügt wird, bis ein Zeilenumbruch erreicht wird, sodass der Buffer nur vollständige Zeilen enthält, mit denen man dann weiterarbeiten kann.
Hoffe das das jmd. verstanden hat. |
Re: TFilestream immer vollständige Zeilen einlesen
Das Prinzip ist doch das gleiche. Lies dir doch mal die verlinkten Beiträge durch.
|
Re: TFilestream immer vollständige Zeilen einlesen
lade die Datei in eine TStringList, werte Count und Items aus und gut ist, :wink:
|
Re: TFilestream immer vollständige Zeilen einlesen
In etwa so:
Delphi-Quellcode:
und so schwer ist das doch garnicht?
i := FS.Read(Buffer, BufLen);
i2 := LetztenZeilenumruchSuchen; i3 := i - i2 - 1{oder -2 ... je nach Länge des Zeilenumbruchs ... #10 / #13#10}; Delete(Buffer, i2 + 1{oder +2}, BisEnde); FS.Seek(-i3, soCurrent); - einfach nachsehn wie lang die letzte Teilzeile ist - letzte (unvollständige) Teilzeile aus'm Puffer löschen - um soviele Bytes im Stream zurückgehn, wie diese Zeile lang war |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:30 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