Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

Re: Erstellungsdatum eines Verzeichnis ermitteln?

  Alt 25. Jan 2008, 18: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)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat