Hallo scrat1979
ich glaube Du hast recht.
Aber irgendwie funktioniert es nicht bei mir.
Habe mit EncodeTime gearbeitet.
Kannst Du mir mal ein Beispiel senden.
Danke und Gruß
Jürgen
Aber natürlich
Hier ist meine "Workaraound"-Funktion:
Delphi-Quellcode:
function RecodeDateTimeEx(ADateTime : TDateTime) : TDateTime;
begin
Result := EncodeDateTime(YearOf(ADateTime), MonthOf(ADateTime), DayOf(ADateTime), HourOf(ADateTime), MinuteOf(ADateTime), SecondOf(ADateTime), 0); // ms spielen bei mir keine Rolle
end;
Folgendermaßen verwende ich die Funktion:
Delphi-Quellcode:
[...]
if FQuery.FieldByName('FeldName').AsDateTime = ZeitStempelZumVergleich then ... // Funktioniert nicht, obwohl Datum und Uhrzeit auch im Debugger identisch sind (wegen besagtem Umrechungsfehler)
if (RecodeDateTimeEx(FQuery.FieldByName('FeldName').AsDateTime) = RecodeDateTimeEx(ZeitStempelZumVergleich)) then ... // Funktioniert
[...]
Achte bitte noch darauf: Falls Du nur Uhrzeiten speicherst, aber ein Datum auch verwendet wird, vergisst nicht, dass Du Dir natürlich den Zeitstempel zuerst zusammenbauen musst:
Zeitstempel = DateOf(Datum) + TimeOf(Datum)
Eventuell vergleichst Du nämlich einen Zeitstempel mit Datum und Uhrzeit mit einem Zeitstempel, welcher Nur die Uhrzeit beinhaltet. Da schlägt der Vergleich Zeistempel1 = Zeitstempel2 natürlich auch fehl, da sich das Datum unterscheidet! Hier wäre es mal interessant zu wissen, wie die Zeitstempel im Debugger beim Vergleich aussehen. Über die "Falle" des unterschiedlichen Datums beim VErgleich bin ich nämlich auch schon gestolpert...