DateTimeToUnix und UnixToDateTime (aus DateUtils bei Delphi 7) zur Konvertierung zwischen den "Welten" nutzen?
Die Konvertierung von Unix nach TDateTime scheint mir damit plausibel zu sein, aber von DateTime nach Unix nicht. Aus dem 30.12.1899 wird als Unix 2085805696, das zurückverwandelt ergibt aber 05.02.2036 06:28:16.
Delphi-Quellcode:
lastUpdate := TXSDatetime.Create;
lastUpdate.AsDateTime := 0.0; //Das hier geht jetzt nicht mehr in Android...
schon klar, aber 0 ist nunmal < 1970 und deshalb fliegt Dir das "irgendwie" um die Ohren.
Der 01.01.1970 ist als TDateTime = 25569 das entspricht also 0 als Unix.
Wenn es Dir darum geht z. B. kein Datum = 0 in "beiden Welten" zu ermöglichen, so musst Du da wohl die 25569 irgendwie als Korrekturwert einbauen.
Ok, andererseits: Wo ist der Cache? Ist sein Inhalt unter Android (in der speziellen Delphiversion) eventuell fehlerhaft befüllt?
Wo kommst Du mit dem Debugger hin, wenn Du hier noch weiter durchsteppst?
if After(AChanges.FStartOfDST) and BeforeSum(AChanges.FStartOfDST, LDstSave) then ///<------------ DANN HIER DER Ausstieg Exit(lttInvalid);
After und BeforeSum müssen doch auch noch irgendwas machen, um den Schluss ziehen zu können, dass das Datum 0 / 30.12.1899 lttInvalid ist.
Und hier müssen sich irgendwelche Unterschiede bei den Delphiversionen ergeben. Hast Du die Möglichkeit mal in zwei IDEs quasi parallel mit dem Debugger dadurchzugehen, um so die Problemursache zu finden?
Hast Du die Quellen der unterschiedlichen Delphiversionen und kannst die betroffenen Units mal mit 'nem Diff vergleichen?