Hallo Wolfgang,
Das ist kein Fehler. Der C164 der CC2 ist ein 16Bit-Controller. D.h. auch das Standardzahlenformat ist 16Bit(Integer). Alle Werte in Deiner Berechnung sind Integer-Werte. Somit erfolgt die Berechnung auf 16-Bit-Ebene. So passiert bei Deiner ersten Funktion nach 9 Uhr ein Überlauf des Integers. (Ergebnis > 32767) Verwendest Du aber in der Berechnung eine Variable mit einem größeren Bereich, dann berechnet der Compiler alles mit diesem Varabel-Typ. Bei Deiner zweiten Funktion ist das float. Aber Du solltest dafür kein float sondern lieber long verwenden, da erstens eine float-Zahl 8Byte RAM und zweitens viel Rechenzeit benötigt:
long BeginGraph;
function BeginZeit() { long hour; hour=system.hour(); BeginGraph=(hour*3600)+(system.minute()*60)+system.second(); }
MfG André H.
> ist das ein Fehler oder hab ich einen? > > Wieso funktioniert das nicht! > function BeginZeit() > { > BeginGraph=(system.hour()*3600)+(system.minute()*60)+system.second(); > } > > > das geht! > function BeginZeit() > { float x; > x=system.hour(); > BeginGraph=(x*3600)+(system.minute()*60)+system.second(); > } > > mfg Wolfgang H.
|