Ich habe hier ein Problem bei dem ich einfach nicht weiterkomme.
Es geht darum das mein Programm einen Editor hat der, wenn der Inhalt als Datei gespeichert wird, bis zu 9 Backup Dateien rolierend erstellt.
Bisher waren die original Datei und die Backups immer im gleichen Verzeichnis was kein Problem war.
Jetzt möchte ich das die original Datei in einem Verzeichnis, und die Backup Dateien in einem anderen Verzeichnis erstellt werden.
Allerdings stellt sich heraus das die ganzen Zeitstempel wann die Dateien erstellt/geändert wurden beim Backup nicht stimmen.
Ich habe hier mal ein einfachen Testcode erstellt. Gebraucht wird nur eine "SynEdit"-Komponenten und zwei einfache Buttons.
Hier der Code für den Button der das Backup in das gleiche Verzeichnis schreibt wo die original Datei liegt.
Die Zeitstempel wann die Dateien inhaltlich verändert wurden wird nicht verändert - richtig
Code: Alles auswählen
// Original und Backup liegen im gleichen Verzeichnis
procedure TForm1.SameDirButtonClick(Sender: TObject);
var rolieren : byte = 0;
datei : String;
begin
datei := 'test.txt';
// *.txt.bak9 löschen da nicht mehr gebraucht
if fileexists(datei+'.bak9') then DeleteFile(datei+'.bak9');
// *.txt.bak1-8 umbenennen in *.txt.bak2-9 (je um 1 erhöhen)
for rolieren := 8 downto 1 do
if fileexists(datei+'.bak'+inttostr(rolieren)) then begin
RenameFile (datei+'.bak'+inttostr(rolieren),
datei+'.bak'+inttostr(rolieren+1));
end;
// Die letzte test.txt Version in test.txt.bak1 umbenennen
RenameFile (datei, datei+'.bak1');
// jetzt den Editor speichern als test.txt
SynEdit1.Lines.SaveToFile(datei);
end;
Das ist der Code für den Button der die Backups in ein anderes Verzeichniss schreibt.
Die Zeitstempel wann die Dateien inhaltlich verändert wurden stimmen nicht. Es wird scheinbar immer der Zeitstempel
genommen wann die erste Backupdatei erstellt wurde - falsch
Code: Alles auswählen
// Original und Backup liegen in unterschiedlichen Verzeichnissen
procedure TForm1.DifferentDirButtonClick(Sender: TObject);
var rolieren : byte = 0;
datei,
backup : String;
begin
datei := 'test.txt';
//LW und Pfad der Datei tauschen
backup := 'c:\temp\'+ExtractFileName(datei);
// *.txt.bak9 löschen da nicht mehr gebraucht
if fileexists(backup+'.bak9') then DeleteFile(backup+'.bak9');
// *.txt.bak1-8 umbenennen in *.txt.bak2-9 (je um 1 erhöhen)
for rolieren := 8 downto 1 do
if fileexists(backup+'.bak'+inttostr(rolieren)) then begin
RenameFile (backup+'.bak'+inttostr(rolieren),
backup+'.bak'+inttostr(rolieren+1));
end;
// Die letzte test.txt Version in test.txt.bak1 umbenennen
RenameFile (datei, backup+'.bak1');
// jetzt den Editor speichern als test.txt
SynEdit1.Lines.SaveToFile(datei);
end;
Ich kann mir das ganze nicht erklären.
Was muß ich machen damit der Zeitstempel der original Datei bei den Backups erhalten bleibt wenn die Backups in einem anderen Verzeichnis erstellt werden?
Gruß
Michael