Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi GetFileTimes liefert mir ein anderes datum zurück (https://www.delphipraxis.net/68590-getfiletimes-liefert-mir-ein-anderes-datum-zurueck.html)

Karstadt 2. Mai 2006 10:39


GetFileTimes liefert mir ein anderes datum zurück
 
Hallo. Habe diesen Code verwendet. http://www.delphipraxis.net/internal...t=getfiletimes ab und zu kommt es bei mir zu einem Datumswert war in der Vergangenheit liegt. Wie kann das passieren?

Wie kann ich das korregieren? Abfangen und heutiges datum zuweisen? bzw. kann ich das irgenwie "auslesen" wenn es mit der obengenannte function nicht geht?

Luckie 2. Mai 2006 10:50

Re: GetFileTimes liefert mir ein anderes datum zurück
 
Zitat:

Zitat von Karstadt
ab und zu kommt es bei mir zu einem Datumswert war in der Vergangenheit liegt.

Da hat meine interne Fehlerkorrektur versagt.

Aber bei mir liegen immer alle Datumswerte in der Vergangenheit, wo auch sonst. In der Gegenwart und der Zukunft können sie nicht liegen.

Karstadt 2. Mai 2006 11:12

Re: GetFileTimes liefert mir ein anderes datum zurück
 
1979 anstatt 2005

NicoDE 2. Mai 2006 12:40

Re: GetFileTimes liefert mir ein anderes datum zurück
 
Zitat:

Zitat von Karstadt
kann ich das irgenwie "auslesen" wenn es mit der obengenannte function nicht geht?

Die Funktion hat einen Rückgabewert.

Ansonsten probiere es damit
Delphi-Quellcode:
function GetLocalFileTimes(const FileName: string; out Created, Accessed, Modified: TDateTime): Boolean;
var
  FileHandle: THandle;
  CreationTime: TFileTime;
  LastAccessTime: TFileTime;
  LastWriteTime: TFileTime;
  LocalCreationTime: TFileTime;
  LocalLastAccessTime: TFileTime;
  LocalLastWriteTime: TFileTime;
  SystemCreationTime: TSystemTime;
  SystemLastAccessTime: TSystemTime;
  SystemLastWriteTime: TSystemTime;
begin
  Result := False;
  FileHandle := CreateFile(PChar(FileName), GENERIC_READ, FILE_SHARE_READ or
    FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, THandle(nil));
  if FileHandle <> INVALID_HANDLE_VALUE then
  try
    if GetFileTime(FileHandle, @CreationTime, @LastAccessTime, @LastWriteTime) and
      FileTimeToLocalFileTime(CreationTime, LocalCreationTime) and
      FileTimeToLocalFileTime(LastAccessTime, LocalLastAccessTime) and
      FileTimeToLocalFileTime(LastWriteTime, LocalLastWriteTime) and
      FileTimeToSystemTime(LocalCreationTime, SystemCreationTime) and
      FileTimeToSystemTime(LocalLastAccessTime, SystemLastAccessTime) and
      FileTimeToSystemTime(LocalLastWriteTime, SystemLastWriteTime) then
    begin
      try
        Created := SystemTimeToDateTime(SystemCreationTime);
        Accessed := SystemTimeToDateTime(SystemLastAccessTime);
        Modified := SystemTimeToDateTime(SystemLastWriteTime);
        Result := True;
      except
        // ignore exceptions;
      end;
    end;
  finally
    CloseHandle(FileHandle);
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  Created: TDateTime;
  Accessed: TDateTime;
  Modified: TDateTime;
begin
  if GetLocalFileTimes(ParamStr(0), Created, Accessed, Modified) then
    ShowMessage(
      'Created: ' + DateTimeToStr(Created) + #13#10 +
      'Accessed: ' + DateTimeToStr(Accessed) + #13#10 +
      'Modified: ' + DateTimeToStr(Modified));
end;
BTW: Nicht alle Dateisysteme unterstüzen alle drei Zeiten...

Karstadt 2. Mai 2006 12:59

Re: GetFileTimes liefert mir ein anderes datum zurück
 
Vielen Dank! BS: Win 2000 und XP

was micht gewundert hat, das dieses fehlverhalten ab und zu auftritt. Ich kann mich erinnern das es irendwann mal so was gab Das bei machen Dateien nicht möglich war die Datumswerte auslesen. weis ich aber nicht warum.

PS: Die Bilder liegen auf eine SD Karte der Digitalkamera..


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:38 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz