![]() |
Textdatei-Einträge rückwärts speichern
OK, der Titel ist nicht sehr aufschlussreich. :-) Deshalb hier die ausführlichere Erklärung:
Bei meinen täglichen Daten-Backups lasse ich am Schluss Informationen in ein Logfile schreiben: Startzeit, Endzeit, Dauer. Dabei wird der jeweilige Eintrag jeden Tag an die vorhandenen angehängt. Nun ist ja klar, dass dabei der neueste Eintrag ganz am Schluss steht. Jetzt hätte ich halt gerne, dass die Reihenfolge umgekehrt ist und der neueste Eintrag ganz am Anfang des Logfiles steht. Mein bisheriger Ansatz ist, dass ich das vorhandene Logfile umbenenne in Logfile.txt.bak, ein neues Logfile.txt erstelle, dort den aktuellen Tages-Eintrag speichere und danach die Einträge aus dem bak hinzufüge. Nachteil dabei ist allerdings, dass ab einer bestimmten Größe des Logfiles das schon heftig lange dauern kann!? Was meint ihr dazu? Kann man das eleganter lösen? Guido. |
Re: Textdatei-Einträge rückwärts speichern
Beim Schreiben nicht, aber beim Anzeigen der Logdatei
|
Re: Textdatei-Einträge rückwärts speichern
Hi
ja kann man :-) Lass doch einfach für jeden Tag ein eigenes Logfile erstellen: Bsp.
Delphi-Quellcode:
dann ist es schön klein, sortiert sich im Explorer gut, und du kannst alte logs bei Bedarf löschen.LogName := 'Logfile-'+FormatDateTime('yyyy-mm-dd', Date) + '.txt'; Gruss |
Re: Textdatei-Einträge rückwärts speichern
Zitat:
Ansonsten in etwa:
Delphi-Quellcode:
Natürlich ist das weder performant noch ressourcenschonend, aber übersichtlich.
var
LogLines : TStringList; begin LogLines := TStringList.Create; try LogLines.LoadFromFile('LogFile.txt'); LogLines.Insert(0, 'Eintrag an erster Stelle'); LogLines.SaveToFile('LogFile.txt'); finally LogLines.Free; end; end; |
Re: Textdatei-Einträge rückwärts speichern
Mit Streams ginge das auch:
Delphi-Quellcode:
Ist aber auch nicht besonders ressourcenschonend, fürchte ich.
procedure AddFirstLine(const sLine: string; const sFilename: TFilename);
var sStream: TStringStream; fStream: TFileStream; begin fStream := TFileStream.Create(sFilename,fmOpenReadWrite); try sStream := TStringStream.Create(sLine); try sStream.WriteString(sLine + sLineBreak); sStream.CopyFrom(fStream,0); fStream.Position := 0; fStream.CopyFrom(sStream,0); finally sStream.Free; end; finally fStream.Free; end; end; [edit] Ist das Syntax-Highlighting neuderdings abgeschaltet? :stupid: [/edit] |
Re: Textdatei-Einträge rückwärts speichern
Zitat:
Zitat:
Beim Sortieren müsse ich dann im Explorer die Spaltenüberschrift anklicken, was in etwa dem derzeitigen Aufwand entspricht, bei dem ich im Logfile die Tastenkombi Strg+Ende drücke. Also nicht wirklich ein Vorteil. Dennoch eine interessante Idee! @Union und DeddyH Die Ideen mit Stringlist und Stream sind vom Prinzip her genauso wie meine Idee mit den zwei Dateien, aber tatsächlich eleganter! :hello: Die werde ich ins Auge fassen. Klingt sehr gut! Was das Performate angeht, bei einer Logfile-Größe von knapp 30 KB nach einem Jahr denke ich, dass die Performance vertretbar ist. Werd ich mal ausprobieren. Winziger Wehrmutstropfen: Die Steuerung der Backups und das Schreiben des Logfiles wird nicht mit Delphi-Code erledigt, sondern mit AutoIt-Code. Mal sehen, was da möglich ist. Ansonsten vielen Dank an alle! :-D PS @Union: Ganz anderes Thema: Ich habe einen ![]() Guido. |
Re: Textdatei-Einträge rückwärts speichern
Ok, habs nun in AutoIt umgesetzt (nur so, als Spielerei). :-)
Das Prinzip von oben habe ich benutzt: Komplettes Logfile einlesen, Inhalt löschen, neuen Eintrag schreiben und zum Schluss den kompletten alten Inhalt hinzufügen. Dank an alle Mitwirkenden! Guido. |
Re: Textdatei-Einträge rückwärts speichern
Logfile in Stringlist einlesen, mit Insert an Position 0 Zeile mit dem Eintrag einfügen und wieder in Datei speichern.
Bernd. |
Re: Textdatei-Einträge rückwärts speichern
Das stand schon in #4 ;)
|
Re: Textdatei-Einträge rückwärts speichern
Sorry, nur kurz überlesen...
Bernd. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:14 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