ElapsedMilliseconds() gibt die Millisekunden seit Systemstart zurück, dieser Wert wird als 32 - Bit Integer gespeichert. Da PB nur Vorzeichenbehaftete Typen kennt überschlägt sich dieser Wert nach 2147483647 Millisekunden ins negative, also nach nicht ganz 25 Tagen. Wenn du denn Wert jetzt Als Quad speicherst (64 bit) könntest du das ganze auf ~ 50 Tage strecken, wobei ich mir nicht sicher bin ob das PB - Interne typecasten das Vorzeichen Bit bei t.q = ElapsedMilliseconds() mitzieht, eventuell braucht's hier noch ein bisschen Bit - Maskierung, aber das sollte nicht das Problem sein.Agent hat geschrieben: Wie kann es sein, dass auf einem PC der Wert für ElapsedMilliseconds() negativ ist?
In Folge dessen werden in meinem Spiel die Einheiten GARNICHT gebaut, da der Timer negativ ist und niemals über den WarteTimer kommt (zb. erst in ein paar Jahren *lol)
Gruß, Alex
// Edit: jup, das PB - Typecasten zieht das das Vorzeichen Bit mit, soeben ausprobiert weil's mich interessiert hat.
Ein kleines Makro um das zu umgehen, so erhält man den unsigned 32 - Bit Wert in eine Quad - Variable, also ~ 50 Tage Messraum:
Code: Alles auswählen
Macro ltq_unsigned(_l)
(((_l) & $7FFFFFFF) | ((_l) & $80000000))
EndMacro
timestamp.q = ltq_unsigned(ElapsedMilliseconds())