Hi,
Eine Textdatei soll geändert werden, ohne dass das Dateidatum geändert wird (primär LastWriteTime)
Die Datei wird geladen, das Dateidatum ausgelesen, die Datei wird geändert (durch den User) und danach wieder gespeichert und
das alte Dateidatum gesetzt.
Leider wird das alte Dateidatum nicht wieder gesetzt. Woran könntest das liegen?
Delphi-Quellcode:
private
FCurFile: string;
FModifiedDateTime : TDateTime;
FCreationTime : FileTime;
FLastAccessTime : FileTime;
FLastWriteTime : FileTime;
Delphi-Quellcode:
procedure GetFileDateTime(const TheFile: string; var fCreationTime, fLastAccessTime, fLastWriteTime: FileTime);
var
fh : THandle;
begin
fh := FileOpen(TheFile, fmOpenRead);
GetFileTime(fh, @fCreationTime, @fLastAccessTime, @fLastWriteTime);
CloseHandle(fh);
end;
procedure SetFileDateTime(const TheFile: string; fCreationTime, fLastAccessTime, fLastWriteTime: FileTime);
var
fh : THandle;
fn : string;
begin
fh := FileOpen(TheFile, fmOpenRead);
SetFileTime(fh, @fCreationTime, @fLastAccessTime, @fLastWriteTime);
CloseHandle(fh);
end;
// Datei Laden und FileDateTime auslesen
procedure TForm1.FileListBox1Click(Sender: TObject);
begin
FCurFile := FileListBox1.Items[FileListBox1.ItemIndex];
Memo1.Lines.LoadFromFile(FCurFile);
GetFileDateTime(FCurFile, fCreationTime, fLastAccessTime, fLastWriteTime);
end;
// Datei speichern und altes FileDateTime setzen
procedure TForm1.btnSaveClick(Sender: TObject);
begin
if FCurFile <> '' then
begin
Memo.Lines.SaveToFile(FCurFile);
SetFileDateTime(FCurFile, fCreationTime, fLastAccessTime, fLastWriteTime);
end;
end;