Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by Uwe Raabe,
12. Dez 2021
Kurz gesagt, auf 32-Bit Posix (Longint = 4 Byte) würde es mit FileDateToDateTime trotzdem nicht funktionieren.
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by Uwe Raabe,
12. Dez 2021
Das hat nichts mit 4 oder 8 Byte zu tun. Das MS-DOS FileDate, das bei Zip verwendet wird, ist ein 32Bit Wert mit folgendem Inhalt:
Bits
0- 4 Sekunden div 2
5-10 Minuten (0–59)
11-15 Stunden (0–23)
16-20 Tag (1–31)
21-24 Monat (1 = Januar, 2 = Februar, ...)
25-31 Jahr - 1980
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by Uwe Raabe,
12. Dez 2021
Weil das Searchrec unter Linux das Datum und die Uhrzeit natürlich schon korrekt codiert enthält. Das kommt ja vom Betriebssystem und nicht aus der ZIP-Datei.
Interessanterweise wird sie das in System.Zip bereits - leider nur private:
function WinFileDateToDateTime(FileDate: UInt32; out DateTime: TDateTime): Boolean;
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by Uwe Raabe,
12. Dez 2021
Wieso soll das ein Fehler von TZipFile sein? Das Feld ModifiedDateTime steht als UInt32 im ZipHeader. Das Problem ist die Umwandlung über FileDateToDateTime und das hat gar nichts mit TZipFile zu tun.
Die Zip-Specs beschreiben diese vier Bytes folgendermaßen:
Zufälligerweise (na ja, nicht ganz zufällig) macht FileDateToDateTime das unter Windows richtig, aber sonst eben nicht, da dort...