Entwickler-Ecke

Windows API - Erstelldatum eines Ordners / einer Datei auslesen


funkymick - Fr 04.06.04 12:32
Titel: Erstelldatum eines Ordners / einer Datei auslesen
Hallo, möchte das Erstelldatum eines Ordners auslesen. Benutze dazu die funktion GetFileAttributesEx... das datum+uhrzeit soll dann als TDateTime zurückgegeben werden... mein quellcode sieht so aus:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
function GetFileCreationDateTime(Filename:String):TDateTime;
var t:TWin32FileAttributeData;
    Zeit:SYSTEMTIME;
begin
 GetFileAttributesEx(pchar(FileName),GetFileExInfoStandard,@t);
 FileTimeToSystemTime(t.ftCreationTime,Zeit);
 Result:=SystemTimeToDateTime(zeit);
end;


Das dumme ist im windows-eigenschaften fenster wird mir die erstellzeit 9:44 angezeigt, was auch richtig ist. der TDateTime gibt mir aber 7:44 zurück...

jemand ne idee, was ich da beachten muss? vielleicht die verschiebung der zeit durch die zeitzone oder so? wenn ja: was muss ich ändern, damit ich auch die richtige zeit zurückbekomme?


Delete - Fr 04.06.04 12:47

Zitat:

jemand ne idee, was ich da beachten muss?

Die Zeitzone und Sommer- / Winterzeit würde ich sagen.


Chatfix - Fr 04.06.04 12:47

Hallo,

kannst du um deinen Code bitte [delphi] und [/delphi] schreiben?
Oder Du markierst dienen Source-Code und klickst den Delphi-Button oben.

Damit kann man den Quelltext wesentlich leichter lesen weil die Syntax hervorgehoben wird.

Danke.

PS: :welcome:


funkymick - Fr 04.06.04 14:12

Luckie hat folgendes geschrieben:
Zitat:

jemand ne idee, was ich da beachten muss?

Die Zeitzone und Sommer- / Winterzeit würde ich sagen.


so hab es jetzt vollständig... inklusive abfrage der sommer / winterzeit und zeitverschiebung... hat auch lange genug gedauert... :roll:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
function GetFileCreationDateTime(Filename:String):TDateTime;
var t:TWin32FileAttributeData;
    Zeit:SYSTEMTIME;
    MyTimeZoneInformation: TTimeZoneInformation;
    Bias:Double;
begin
 result:=now;
 if not (FileExists(Filename) or DirectoryExists(Filename)) then exit;
 case GetTimeZoneInformation(MyTimeZoneInformation) of
  1: Bias := (MyTimeZoneInformation.StandardBias+MyTimeZoneInformation.Bias) / 1440;
  2: Bias := (MyTimeZoneInformation.DaylightBias+MyTimeZoneInformation.Bias) / 1440;
 else
  Bias:=0
 end;
 GetFileAttributesEx(pchar(FileName),GetFileExInfoStandard,@t);
 FileTimeToSystemTime(t.ftCreationTime,Zeit);
 Result:=SystemTimeToDateTime(zeit)-Bias;
end;


Bollwerk - Mi 18.08.04 10:37

TSearchrec...

Um an das Datum zu kommen geht das doch mit der Routine

FindNext

schneller ?
aber einfacher zu lesen ;)

Aber dank der routine hat man wieder ein paar funktionen dazugelernt....