Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
Delphi 12 Athens
|
Re: Problem mit Dateialter und Zeitumstellung
27. Mär 2006, 12:00
Das Datum im Dateisystem (also auf der Platte und dem USB-Stick) wird als GMT+0 abgespeichert, also ohne irgendwelche Zeitzonen- und Winter-/Sommerzeitinformationen.
Und ich vermute mal, daß bei einem der Datumsangaben, welche du ausließt diese "Zeitverschiebung" mit eingetrechnet wurde und beim anderem nicht, daher der Unterschied.
FileDateToDateTime(FileAge((...)) sollte den Wert als GMT+0 liefern (glaub ich), also könnte es daran liegen, daß das Dateim in dt incl. dieser Verschiebung vorliegt ... wie besorgst'n du dir dieses?
z.B. wurd bei den Dateumsangaben in TSearchResult (FindFirst/FindNext) die Zeitverschiebung des aktuell laufendem Systems schon beim uslesen mit zugerechnet.
Außerdem ist TDateTime ein ziehmlich ungenauer Datentyp, für solche Vergleiche ... der ist ja nur'n Double ... besser wöre es, wenn du die FileDate-Werte miteinander vergleichst, dat sind Integer und demnach etwas besser geeignet (abgesehn von den Rundungsfehlern beruhend auf'm Dateisystem)
PS: ich würde den Vergleich nicht nach dem Datum machen ... nich alle Dateisysteme besitzen die selbe Auflösung für's Datum, wobei es dann also zu Rundungsfehlern kommt ... hatte ich selber mal das Problem, obwohl Die Dateien das selbe datum haben sollten (da sie ja kopiert und somit "gleich" waren), gab es dennoch eine Differenz von bis zu 2 Sekunden (bei mir war'ns glaub'sch FAT16 und NTFS4).
Also entweder du vergleichst die Dateien direkt (Byte für Byte) oder per Hash (wobei man dort zur Sicherheit, bei gleichem Hash, auch nochmal Byte für Byte vergleichen sollte)
$2B or not $2B
|