23.07.2014, 21:35
(22.07.2014, 14:58)routeconverter Wrote:(21.07.2014, 21:13)thomas.friese Wrote: In Zeile 167 wird bei:
int summedUp = totalTimeMilliSeconds > 0 ? (int) totalTimeMilliSeconds / 1000 : 0;
der Cast (int) totalTimeMilliSeconds in meinem Fall negativ ... geringfügig robuster dagegen wäre der Code mit cast nach division:
int summedUp = totalTimeMilliSeconds > 0 ? (int) (totalTimeMilliSeconds / 1000) : 0;
Ich habe den Cast auf int nun erst beim Aufruf fireCalculatedDistance() da ich glaube, daß mehr als 2^31 Sekunden - also knapp 70 Jahre - unwahrscheinlich sind. Eine Vorabversion habe ich gerade hochgeladen, bitte teste und berichte mal!
Den Cast später zu machen löst das Problem: das war ja gerade, dass Du nicht mit Sekunden sondern mit Millisekunden hantiert hast in dem Cast und erst DANACH die Division ausgewertet wird. und 2^31 Millisekunden sind "nur" etwa 25 Tage.
Bei mir war z.B.
totalTimeMilliseconds = 58720821000
(int)totalTimeMilliSeconds = -1408721144
==> (int)totalTimeMilliSeconds / 1000 = -1408721
Dein fireCalculatedDistance( ..., max( ...,summedUp)); hat den Fehler dann sogar wieder aufgefangen, der Code ist aber sicherer wenn Du später castest.
Die neue Version funktioniert auf jeden Fall auch mit meiner Datei.
Gruß
Thomas