![]() |
wie: Uhrzeit von Verzeichnissen ändern ?
gibts auch was, um die Uhrzeit zu ändern?
hatte mal diesen Code gefunden, aber das funktioniert irgendwie nicht
Delphi-Quellcode:
function SetFileTimes(FileName: string;
const Created: TDateTime; const Modified: TDateTime; const Accessed: TDateTime): Boolean; var FileHandle: Integer; FTime, FTimeC, FTimeA, FTimeM: TFileTime; STime: TSystemTime; TimeFlag: Integer; begin TimeFlag := 0; Result := False; ZeroMemory(@FTime, SizeOf(FTime)); ZeroMemory(@FTime, SizeOf(FTimeC)); ZeroMemory(@FTime, SizeOf(FTimeM)); ZeroMemory(@FTime, SizeOf(FTimeA)); // Created if Created > 0 then begin DateTimeToSystemTime(Created, STime); SystemTimeToFileTime(STime, FTime); LocalFileTimeToFileTime(FTime, FTimeC); Inc(TimeFlag, 1); end; // Accessed if Accessed > 0 then begin DateTimeToSystemTime(Accessed, STime); SystemTimeToFileTime(STime, FTime); LocalFileTimeToFileTime(FTime, FTimeA); Inc(TimeFlag, 2); end; // Modified if Modified > 0 then begin DateTimeToSystemTime(Modified, STime); SystemTimeToFileTime(STime, FTime); LocalFileTimeToFileTime(FTime, FTimeM); Inc(TimeFlag, 4); end; if TimeFlag = 0 then begin Exit; // Nothing to do end; // Get a File Handle FileHandle := FileOpen(FileName, fmOpenReadWrite + fmShareExclusive); if FileHandle < 0 then begin Exit; end; ///////////////////////////// /// Aufruf //////////////////////// procedure TForm1.Button3Click(Sender: TObject); var wfn: string; d: Tsearchrec; FT: TFiletime; ST: TSYSTEMTIME; DT: TDateTime; I, H: Integer; begin if Edit1.Text = '' then Exit: // kein Pfad angegeben DT := Now; // 35065 = 1.1.1996 0 Uhr; DecodeTime(DT, ST.wHour, ST.wMinute, ST.wSecond, St.wMilliseconds); DecodeDate(DT, ST.wYear, ST.wMonth, ST.wDay); SystemTimeToFileTime(ST, ft); h := FileOpen(Edit1.Text, fmopenwrite); SetFileTime(h, @ft, @ft, @ft); FileClose(h); end; |
Re: wie: Uhrzeit von Verzeichnissen ändern ?
Moin Jens,
das hier
Delphi-Quellcode:
ist gefährlich. Da es sich um ein Bitfeld handelt, sollte man die Werte mit OR verknüpfen, da man ansonsten ungültige Werte erhalten kann.
fmOpenReadWrite + fmShareExclusive
Auch wenn es so in der Delphi-Hilfe dokumentiert ist, würde ich den Rückgabewert von FileOpen nicht auf < 0, sondern auf = -1, besser noch, auf = INVALID_HANDLE_VALUE vergleichen, (INVALID_HANDLE_VALUE ist -1), da dieser Wert für CreateFile als "Aufruf fehlgeschlagen" definiert ist. (CreateFile wird intern von FileOpen benutzt). Der Aufruf wird bei Dir deshalb fehlschlagen, da man mit FileOpen keine Verzeichnisse öffnen kann. Hierzu solltest Du Dir mal ![]() |
Re: wie: Uhrzeit von Verzeichnissen ändern ?
In der
![]()
Delphi-Quellcode:
Du kannst nun versuchen, die Funktionen herauszuextrahieren oder die JCL ingesamt verwenden.
function SetDirLastWrite(const DirName: string; const DateTime: TDateTime): Boolean;
function SetDirLastAccess(const DirName: string; const DateTime: TDateTime): Boolean; function SetDirCreation(const DirName: string; const DateTime: TDateTime): Boolean; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:37 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