Delphi-Quellcode:
Baseperhour := (2.539.006 - 1.935.338) * 60 * 60 / 1781;
Baseperhour := 2.173.204.800 {$81887940} / 1781;
da es bis zum
/ alles Integer sind, wird da nur mit Integern
gerechnet und da liegt das Zwischenergebnis außerhalb des Wertebereichs.
PS: mit aktiver Überlaufprüfung wäre dieses aufgefallen!
Delphi-Quellcode:
// wurde schon genannt
Baseperhour := (exp.Baseexp - exp.startbaseexp) * 60.0 * 60 / Seconds;
// das wäre auch gegangen
Baseperhour := Real(exp.Baseexp - exp.startbaseexp) * 60 * 60 / Seconds;
und diese beiden (gibt noch mehr) Möglichkeiten verschieben die Berechnung (für diese Werte) rechtzeitig in von Integer- in die Fließkommaberechnung.
und falls sogar die Negation schon den Integerbereich sprengen könnte, dann so
Delphi-Quellcode:
// das wäre auch gegangen
Baseperhour := (Real(exp.Baseexp) - exp.startbaseexp) * 60 * 60 / Seconds;