//
Variante 1: Diese Funktion
ändert den Erstellungszeitpunkt einer Datei
// Getestet mit D4 unter Win98
function zeitsetzen(datei, datumzeit: string): integer;
var
i: integer;
h: Thandle;
begin
i := DateTimeToFileDate(StrToDateTime(datumzeit));
h := FileOpen(datei, fmOpenwrite);
result := FilesetDate(h, i);
FileClose(h);
end;
// Beispielaufruf
procedure TForm1.Button1Click(Sender: TObject);
var s: string;
begin
s := '31.12.2000 17:01:14';
if zeitsetzen('c:\autoexec.bat', s) <> 0 then
showmessage('Fehler aufgetreten!');
end;
//-------------------------------------------------------------------
// Variante 2: Änderung des Erstellungszeitpunktes und des letzten
// Schreibzugriffes einer Datei
// Getestet mit D4 unter XP
function DateiZeiten(Datei, sErstellt, sGeaendert: string): Boolean;
var
H: THandle;
ST: TSystemTime;
PM, PC: PFileTime;
FT, FTC, FTM: TFileTime;
Erstellt, Geaendert: TDateTime;
begin
Result := False;
try
if sErstellt <> '' then begin
Erstellt := strtodatetime(sErstellt);
DateTimeToSystemTime(Erstellt, ST);
SystemTimeToFileTime(ST, FT);
LocalFileTimeToFileTime(FT, FTC);
PC := @FTC;
end else PC := nil;
if sGeaendert <> '' then begin
Geaendert := strtodatetime(sGeaendert);
DateTimeToSystemTime(Geaendert, ST);
SystemTimeToFileTime(ST, FT);
LocalFileTimeToFileTime(FT, FTM);
PM := @FTM;
end else PM := nil;
except
exit;
end;
H := FileOpen(Datei, fmOpenWrite or fmShareExclusive);
if H > 0 then begin
Result := SetFileTime(H, PC, nil, PM);
FileClose(H);
end;
end;
// Beispielaufruf
procedure TForm1.FormCreate(Sender: TObject);
begin
edit1.text := ''; // keine Änderung des Erstellungzeitpunktes
edit2.text := '2.2.2002 22:02:02'; // Änderung letzter Schreibzugriff
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.execute then begin
if not DateiZeiten(OpenDialog1.filename, edit1.text, edit2.text) then
showmessage('Es ist ein Fehler aufgetreten!') else
showmessage('Dateizeit wurde gesetzt!')
end;
end;
![](zurueck.gif)
|