Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by Harry Stahl,
12. Dez 2021
1. Ich habe den Eindruck wir meinen wohl ziemlich ähnliches, reden aber ein wenig aneinander vorbei. Klar, ein 32-Bitiger Wert kann in 64-Bit enthalten sein und insofern auch ausgewertet werden. Manchmal gibt es aber Fälle, wo der ganze 64-Bit Wert, z.B. für eine Berechnung verwendet wird und wenn der nicht genullt ist (weil z.B. ein Zeiger auf einen Speicherbereich), dann kann es in einer...
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by Harry Stahl,
12. Dez 2021
Wobei das "Zipfile.FileInfo.ModifiedDateTime" auf allen Plattformen denselben Wert enthält.
FileDateToDateTime, das als Parameter ein LongInt erwartet - macht daher unter Windows den richtigen Wert draus, da UINT32 auch unter Windows ein 4 Byte Wert ist, wie eben auch LongInt.
Unter Linux 64 Bit ist LongInt aber ein 8 Byte Wert, daher kann man letztlich nicht den UINT32-4-Byte Wert an eine...
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by Harry Stahl,
12. Dez 2021
Aber warum funktioniert FileTimeToDateTime dann unter Linux, wenn als Parameter ein LongInt verwendet wird (mein og. Beispiel mit Searchrec.time), aber nicht, wenn als Parameter ein UINT32 verwendet wird (wie hier in Modifieddate)?
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by Harry Stahl,
12. Dez 2021
Da stimme ich Dir zu, Uwe, das war auch letztlich meine abschließende Schlussfolgerung in Beitrag #8.
Am Anfang sah es aber erstmal so aus, daher ja meine Frage und der Post des verwendeten Beispiels...
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by Harry Stahl,
12. Dez 2021
Ich würde das mal also eher nicht als BUG bezeichnen, sondern man muss halt diese Umstände kennen und entsprechend auf den Plattformen anders reagieren. Ich werde aber noch mal überlegen, ob das nicht irgendwie eleganter geht, durch einen intelligenten Typecast oder so.
Jedenfalls bin ich froh, dass es nun funktioniert, hatte mich schon über die Erweiterung "TZipFile.delete" in Delphi 11...
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by Harry Stahl,
12. Dez 2021
OK, wie vermutet mal wieder diese schönen Integer-Spielchen:
Unter 32-Bit Plattformen und Windows 64 Bit Plattform ist Longint ein 4 Byte Typ, unter Linux 64 bit und mac 64 aber ein 8 Byte Typ.
Da ich gerade nicht wüsste, wie ich in der System.Sysutils das anpassen könnte (wohl per IFDEF auch den Header der Funktion ändern), habe ich es als temporäre Lösung so gemacht, so funktioniert es...
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by Harry Stahl,
12. Dez 2021
Um in einem bestehenden Zip-Archiv das Änderungsdatum einer Datei auszulesen mache ich es so:
DatumZeitStr := FormatDateTime ('dd.mm.yyyy hh:nn:ss', FileDateToDateTime (Zipfile.FileInfo.ModifiedDateTime));
Unter Windows wird mir das richtige Datum und Zeit zurückgegeben, unter macOS und Linux aber ein um ca. 7 Jahre zu altes Datum.
Könnt Ihr das bestätigen?