Entwickler-Ecke
Dateizugriff - DateTime TO STRING
Jakob Schöttl - Fr 06.10.06 19:23
Titel: DateTime TO STRING
<SearchRec.FindData.ftLastAccessTime.dwLowDateTime TO STRING>
HI
Ich muss die letzte zugriffszeit von einigen dateien wissen. dazu hab ich SearchRec.FindData.ftLastAccessTime.dwLowDateTime genommen bzw. dwHightDateTime.
Jetzt weiß ich nur nciht, wie ich das in das normale DateTime und somit in einen Str konvertieren kann. Ich hab keine Konvertierungsfunktion gefunden.
Ich hoffe ihr könnt mir helfen!
Chryzler - Fr 06.10.06 20:55
Was für ein Typ ist denn dieses dwLowDateTime? In der Hilfe steht auch nix?
Jakob Schöttl - Sa 07.10.06 10:01
Also,
dwLowDateTime ist fast das gleiche wie
dwHightDateTime; beide sind im Record
ftLastAccessTime und haben den Typ
Cardinal, also DoubleWord;
Delphi-Quelltext
1: 2: 3: 4:
| _FILETIME = record dwLowDateTime: DWORD; dwHighDateTime: DWORD; end; |
TSearchRec ist ja in der delphi-Hilfe noch referenziert, aber seine Records (plattformspezifisch) nicht.
GTA-Place - Sa 07.10.06 10:13
In der Hilfe ist die Funktion FileDateToDateTime beschrieben. Schon gesehen?
Jakob Schöttl - Sa 07.10.06 10:21
ja danke, aber die hab ich schon probiert, und da kam eine exception: "unerwartetes Format" oder so. Der parametertyp hat schon gestimmt, aber er konnte es habl nciht konvertieren
GTA-Place - Sa 07.10.06 10:24
Ich hab es gerade ausprobiert, da kam keine Fehlermeldung o_O.
Jakob Schöttl - Sa 07.10.06 12:36
Ich hab grad rausgefunden:
Delphi-Quelltext
1: 2: 3: 4: 5:
| DateTimeToStr(FileDateToDateTime(SearchRec.FindData.ftLastAccessTime.dwHighDateTime))
DateTimeToStr(FileDateToDateTime(SearchRec.FindData.ftLastAccessTime.dwLowDateTime)) |
Ich hab also den niedrige n Zeitstempel genommen, aber da kommt was raus, was nicht sein kann, nähmlich als Jahr 1986. Das kann glaub ich nicht sein, weil ich die dateien vor 1 Jahr installiert hab.
und jetzt kam grad auch bei dem dwLowDateTime eine Exception: 'Ungültiges Argument zum zum Codieren des Datums' der Klasse EConvertError;
Jakob Schöttl - So 13.05.07 12:41
Delphi-Quelltext
1: 2:
| SearchRec.FindData.ftLastAccessTime.dwHighDateTime SearchRec.FindData.ftLastAccessTime.dwLowDateTime |
Mir ist jetzt eingefallen, dass das
Low und
High zusammengehören. Das Nieder- und Höherwertige DoppelWort...
Aber wie man das konvertieren könnte weiß ich immer noch nicht.
Chryzler - So 13.05.07 13:43
Vielleicht geht das?
Delphi-Quelltext
1:
| DateTimeToStr(FileDateToDateTime(SearchRec.FindData.ftLastAccessTime)); |
Ansonsten musst du eben die High- und Low-Bytes zu einem zusammenfügen. Geht glaub ich ungefähr mit
together := (High shl 32) + Low;
Jakob Schöttl - So 13.05.07 20:23
aja, das könnte gehen, aber wenn ich "LastAccess" nehme, dann hab ich die letzte zugriffszeit und nciht die erstellungszeit.
GTA-Place - So 13.05.07 21:32
Dann nimm doch ftCreationTime.
Jakob Schöttl - Mo 14.05.07 14:13
GTA-Place hat folgendes geschrieben: |
Dann nimm doch ftCreationTime. |
ja, aber es ging ja darum den Record mit zwei
DWORDs in eine gültige Zeit umzuwandeln.
Lannes - Mo 14.05.07 15:39
Hallo,
so funktioniert es in meiner Anwendung:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| var LTime : TFileTime; SystemTime : TSystemTime; begin FileTimeToLocalFileTime(SR.FindData.ftLastAccessTime, LTime); FileTimeToSystemTime(LTime, SystemTime); showmessage(FormatDateTime('dd/mm/yyyy hh:nn:ss',SystemTimeToDateTime(SystemTime))); |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!