Online
Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.052 Beiträge
Delphi 12 Athens
|
Re: Erstellungsdatum eines Verzeichnis ermitteln?
25. Jan 2008, 19:32
also mit FindFirst oder der zugehörigen WinAPI (FindFirstFile) sollte es dennoch funktionieren.
um GetFileTime verwenden zu können muß das Verzeichnis geöffnet werden und z.B. ohne nötige Backuprechte geht dieses nicht so einfach.
was sagt'n der Anhang?
hab da direkt die WinAPI angesprochen, aber mit allem anderem, was auf diese aufbaut, sollte es genauso gehn.
Delphi-Quellcode:
Program Project1;
{$APPTYPE CONSOLE}
Uses Windows, SysUtils;
Var S: String;
H: THandle;
FT: TFileTime;
ST: TSystemTime;
FD: WIN32_FIND_DATA;
Begin
S := 'C:\Windows';
WriteLn(S);
WriteLn;
WriteLn('CreateFile>GetFileTime:');
H := CreateFile(PChar(S), GENERIC_READ,
FILE_SHARE_READ or FILE_SHARE_WRITE,
nil, OPEN_EXISTING, 0, 0);
If H <> INVALID_HANDLE_VALUE Then Begin
GetFileTime(H, @FT, nil, nil);
If FileTimeToSystemTime(FT, ST) Then Begin
WriteLn(DateTimeToStr(SystemTimeToDateTime(ST)) + ' GMT');
End Else WriteLn('"' + S + '" > ungueltiges Datum');
CloseHandle(H);
End Else WriteLn('"' + S + '" nicht gefunden oder kein Zugriff');
WriteLn('>' + SysErrorMessage(GetLastError));
WriteLn;
WriteLn('FindFirstFile:');
H := FindFirstFile(PChar(S), FD);
If H <> INVALID_HANDLE_VALUE Then Begin
If FileTimeToSystemTime(FD.ftCreationTime, ST) Then Begin
WriteLn(DateTimeToStr(SystemTimeToDateTime(ST)) + ' GMT');
End Else WriteLn('"' + S + '" > ungueltiges Datum');
FindClose(H);
End Else WriteLn('"' + S + '" nicht gefunden');
WriteLn('>' + SysErrorMessage(GetLastError));
WriteLn;
WriteLn;
S := 'C:\Windows\Win.ini';
WriteLn(S);
WriteLn;
WriteLn('CreateFile>GetFileTime:');
H := CreateFile(PChar(S), GENERIC_READ,
FILE_SHARE_READ or FILE_SHARE_WRITE,
nil, OPEN_EXISTING, 0, 0);
If H <> INVALID_HANDLE_VALUE Then Begin
GetFileTime(H, @FT, nil, nil);
If FileTimeToSystemTime(FT, ST) Then Begin
WriteLn(DateTimeToStr(SystemTimeToDateTime(ST)) + ' GMT');
End Else WriteLn('"' + S + '" > ungueltiges Datum');
CloseHandle(H);
End Else WriteLn('"' + S + '" nicht gefunden oder kein Zugriff');
WriteLn('>' + SysErrorMessage(GetLastError));
WriteLn;
WriteLn('FindFirstFile:');
H := FindFirstFile(PChar(S), FD);
If H <> INVALID_HANDLE_VALUE Then Begin
If FileTimeToSystemTime(FD.ftCreationTime, ST) Then Begin
WriteLn(DateTimeToStr(SystemTimeToDateTime(ST)) + ' GMT');
End Else WriteLn('"' + S + '" > ungueltiges Datum');
FindClose(H);
End Else WriteLn('"' + S + '" nicht gefunden');
WriteLn('>' + SysErrorMessage(GetLastError));
WriteLn;
WriteLn;
WriteLn('weiter mit [Enter]');
ReadLn;
End.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
|
|
Zitat
|