Für dieses Forum muß Javascript im Browser aktiviert werden!
Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C2 Quellcode formatieren: <code>Quellcode</code> ASM Quellcode formatieren: <asm>Quellcode</asm> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! > Hallo Günter, > > > > ... > > > <code>long timer; > > > ... > > > timer=system.timer(); > > > wait system.timer()-timer>Wartezeit > > > ...</code> > > > > Im Handbuch steht, daß der timer bei 2147483647 in -2147483648 überläuft und wenn ich nach der > > beschriebenen Formel arbeite passiert folgendes: > > > > Basis Timer Formelergebnis > > 2147483644 2147483644 0 > > 2147483645 1 > > 2147483646 2 > > 2147483647 3 > > -2147483648 -4294967292 > > -2147483647 -4294967291 > > -2147483646 -4294967290 > > > > Nach dem Überlauf würde also die obige Bedingung ewig nicht mehr erfüllt werden, oder sehe ich das falsch? > > Du siehst das falsch. > Denn nicht nur der Timer läuft über, sondern jede Variable. > somit wird aus 2147483647+1 immer -2147483648 , egal, ob timer oder normale Long-Variable. > Timervergleiche werden in der Programmierung eigentlich schon immer auf diese Weise gemacht, > da diese immer funzen. > Vieleicht lässt sich das am einfachsten mit der Hex-Schreibweise verdeiutlichen: > 0x00000000 bis 0x7FFFFFFF sind die Werte von 0 bis 2147483647 > 0x80000000 bis 0xFFFFFFFF sind die Werte von -2147483648 bis -1 > Addierst Du nun bei 0x7FFFFFFF eins dazu, erhäst Du 0x80000000, also -2147483648. > Addierst Du bei 0xFFFFFFFF (=-1) ein dazu erhälst Du 0. > Der eigentliche Überlauf findet also von -1 zu 0 statt. > Bei der Subtraktion verhält sich das ganze genauso. > > Wenn Du jetzt system.timer()-timer rechnest, und timer den Wert 2147483000 hat > und der System-timer bei -214748250 steht, wird also > -2147482500 - 2147483000 gerechnet. > Hier kommt es bei der Berechnung zu einem "Überlauf": > 0x8000047C - 0x7FFFFD78 > Wie Du siehst aber nicht wirklich. :-) > Das Ergebis wäre hier 1796 (0x704). > Ineressant wäre eher der Timerbereich von z.B. -100 zu +50. > system.timer() - timer: > 0x00000032 - 0xFFFFFF9C > Hier findet ein echter Überlauf bei der Berechnung statt. > Das Ergebis ist aber dennoch +150. > > > Kann ich den Timer einfach zurücksetzen (z.B. bevor diese Funktion beginnt?) > > Kann man. Aber das hätte keinen Sinn. > > > MfG André H.