// 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;


Zugriffe seit 6.9.2001 auf Delphi-Ecke