Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.052 Beiträge
 
Delphi 12 Athens
 
#7

Re: Erstellungsdatum eines Verzeichnis ermitteln?

  Alt 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.
Angehängte Dateien
Dateityp: exe project1_768.exe (48,0 KB, 10x aufgerufen)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat