Hallo marabu,
deine Funktion funktioniert korrekt für mein 'c:\windows'. Sie gibt mir das korrekte Datum '28. 01. 2004 11:54:54' zurück. Zumindest weißt auch der Explorer das auch so aus.
Bei einem weiterem Test-Verzeichnis (erstellt am '21.06.2007 17:48:37') unterscheidet sich das Datum, genauer, die Zeit um eine Stunde.
Es wird eine Stunde später angezeigt ('18:48:37') als im Explorer. Vermutlich hat es etwas mit Winder- und Sommerzeit zu tun, denn das Windows-Verzeichnis ist (wie man sehen kann) zur Winterzeit angelegt und mein Test-Verzeichnis zur Sommerzeit.
Nun bleibt die Frage, ob man das mit
Delphi-Quellcode:
//aus DP-Lib GetFileTimes:
if GetTimeZoneInformation(TimeZoneInfo) <> $FFFFFFFF
then
Bias := TimeZoneInfo.Bias / 1440;
// 60x24
GetFileTime(h, @Info1, @Info2, @Info3);
if FileTimeToSystemTime(Info1, SysTimeStruct)
then
Created := SystemTimeToDateTime(SysTimeStruct) - Bias;
korrekt erschlagen kann.
Werde ich mal testen, denn stutzig macht mich
himitsu Test-Programm-Ausgabe, die ebenfalls eine Stunde falsch liegt. Allerdings eine Stunde zu früh, in beiden fällen 'C:\Windows' und 'C:\Windows\Win.ini'.
Hallo himitsu
Ausgabe Projekt1.exe:
Code:
D:\Temp>Project1.exe
C:\Windows
CreateFile>GetFileTime:
"C:\Windows" nicht gefunden oder kein Zugriff
>Zugriff verweigert
FindFirstFile:
28.01.2004 10:54:54 GMT
>Zugriff verweigert
C:\Windows\Win.ini
CreateFile>GetFileTime:
18.08.2001 19:00:00 GMT
>Der Vorgang wurde erfolgreich beendet
FindFirstFile:
18.08.2001 19:00:00 GMT
>Der Vorgang wurde erfolgreich beendet
weiter mit [Enter]
Auch mein Test-Verzeichnis, welches auch mit marabu's Funktion nicht korrekt ermittelt wird, wird hier eine Stunde zu früh angezeigt (21.06.2007 16:48:37). Das sind schon 2 Stunden Differenz.
Okay, die Zeiten sind in GMT angegeben, aber das Winter- Sommerzeit-, allgemein das Zeitzonen-Problem weiß ich nicht zu lösen. Dafür bin ich irgendwie zu blöde.
Zu guter Letzt bleibt noch die Frage, warum die verwendete
API-Funktion
GetFileTime in himitsu's Code einen zumindest plausiblen Wert zurück bringt und in der
DP-Lib-GetFileTimes nicht?
Die GetFileTimes-Funktion funktioniert für Dateien problemlos, nur mit Verzeichnisse macht mir die Funktion Schwierigkeiten.
Danke und Grüße
gmc