![]() |
Einlesen von Datei mittels TFileStream
Hallo!
Also ich schreibe ein LogFile ine Datei mittels FileStream. Ich schreibe pro Zeile immer einen Logeintrag. Eine Zeile beginnt immer so:
Code:
Also jede Zeile beginnt mit einem 0-Zeichen.
[b]NUL[/b][yyyy-mm-dd hh:mm:ss] [LogType] Logeintrag
Wie kann ich jetzt diese Zeilen wieder einlesen? Ich habe bis jetzt so gut wie noch nichts mit FileStreams gemacht und will jede LogZeile (also von NUL bis NUL) in ein StringGrid laden. Könnte mir wer da ein Beipiel geben bitte? Grüße Faux |
Re: Einlesen von Datei mittels TFileStream
Schreib einen String in die Datei mit den Zeichen #13#10 am Ende (Zeilenumbruch).
Dann kannst du die Datei nachher mit einer TStringList einlesen und kannst auf die Zeilen zugreifen. Du könntest das Schreiben auch gleich mit einer STringList machen, aber der TFileStream bietet sich wegen seines sofortigen Schreibens an. Öffne den FileStream so:
Delphi-Quellcode:
Ich hoffe das hilft dir weiter! ;-)
var
FS: TFileStream; begin FS := TFileStream(FileName, fmOpenWrite); try FS.Seek(0, soFromEnd); FS.WriteBuffer(S[1], Length(S)); //S ist dein String mit #13#10 am Ende finally FS.Free; end; end; |
Re: Einlesen von Datei mittels TFileStream
Zitat:
Naja, ich sehe gerade dein Vorschlag bezieht sich eher auf das Schreiben, das habe ich aber bereits gelöst. Mir geht es ums Auslesen der Datei. ;) Aber dein Vorschlag mit der TStringList war mal nicht so schlecht. Habe es so gelöst:
Delphi-Quellcode:
Grüße
procedure TForm1.RefreshLogClick(Sender: TObject);
var LogFile: TFileStream; List: TStringList; i: Integer; begin LogFile := TFileStream.Create(DllPath + '\sql.log', fmOpenRead or fmShareDenyNone); List := TStringList.Create; List.LoadFromStream(LogFile); for i := 0 to List.Count - 1 do begin StringGrid1.Cells[1, i] := List[i]; end; List.Free; LogFile.Free; end; Faux |
Re: Einlesen von Datei mittels TFileStream
Zum Laden einer Textdatei nimm doch die Methode >LoadFromFile< der TStringList ;-)
|
Re: Einlesen von Datei mittels TFileStream
Zitat:
Grüße Faux |
Re: Einlesen von Datei mittels TFileStream
Ach so, dann ist das natürlich die beste Lösung
|
Re: Einlesen von Datei mittels TFileStream
Auf die temporäre Stringliste könnte man noch verzichten:
Delphi-Quellcode:
Gruß Hawkeye
procedure TForm1.RefreshLogClick(Sender: TObject);
var LogFile: TFileStream; begin LogFile := TFileStream.Create(DllPath + '\sql.log', fmOpenRead or fmShareDenyNone); StringGrid1.Cols[1].LoadFromStream(LogFile); LogFile.Free; end; |
Re: Einlesen von Datei mittels TFileStream
Zitat:
Ich wollte ursprünglich das ganze noch etwas verändern, deswegen die StringList. :) Grüße Faux |
Re: Einlesen von Datei mittels TFileStream
Moin Manuel,
eine Idee hätte ich noch. Verzichte auf das #00 am Anfang, und #13#10 am Ende. Schreibe statt dessen die Länge der Zeile vor die Zeile. Diese dann auslesen, und Du kannst exakt die jeweilige Zeile aus dem Stream lesen. |
Re: Einlesen von Datei mittels TFileStream
Zitat:
Danke! Grüße Faux |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:52 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