Page 1 sur 1

ElapsedMilliseconds() ?????

Publié : lun. 05/oct./2015 17:44
par microdevweb
Avant ElapsedMilliseconds() me renvoyait une valeur positive maintenant :?: Il me renvoie une valeur négative. Heu la je comprend pas ??????????

Testé sur Pb 5.31 et 5.40 b8 Os Windows 7

Code : Tout sélectionner

Debug ElapsedMilliseconds() ; renvoie -2080830966

Re: ElapsedMilliseconds() ?????

Publié : lun. 05/oct./2015 17:57
par G-Rom
ton programme à commencer il y a à peu près 2035 ans ^^ ton pc à altéré le continuum espace temps mcFly ! :mrgreen:
aucune idée du pourquoi ^^ reboot ton pc.

Re: ElapsedMilliseconds() ?????

Publié : lun. 05/oct./2015 18:23
par Anonyme2
Je ne sais pas si cela vient de là, mais parfois debug affiche une valeur négative, j'utilise alors un messagerequester avec str() pour afficher les valeurs correctes.

Re: ElapsedMilliseconds() ?????

Publié : lun. 05/oct./2015 19:36
par celtic88
essaye ça ?
Debug GetTickCount_()

Re: ElapsedMilliseconds() ?????

Publié : lun. 05/oct./2015 19:48
par microdevweb
Bonsoir celtic88,

Code : Tout sélectionner

Debug GetTickCount_() ; donne -2073375560
Comme le dit G-Rom mon Pc est retourné dans le temps. Whaouwwwwwwww j'ai inventé la machine à remonté le temps. :mrgreen:

Re: ElapsedMilliseconds() ?????

Publié : lun. 05/oct./2015 20:06
par celtic88
microdevweb lol

mai il te faux une "delorean"


Image

:p

Re: ElapsedMilliseconds() ?????

Publié : mar. 06/oct./2015 8:44
par microdevweb
Bon blague dans le coin, après un Reboot c'est revenu dans l'ordre. Cependant si cela mes arrivé cela peut arriver à d'autre Pc et alors le code suivant ne fonctionnera pas.

(normalement ce code devrait être effectué la première fois et puis toutes les 100 millisecondes)

Code : Tout sélectionner

Global TimeElapsed.i
If ElapsedMilliseconds()-TimeElapsed>100
      Debug "Ok"
      TimeElapsed=ElapsedMilliseconds()
EndIf
Et voici un bug bien difficile puisque sur la plupart des machines ce code fonctionnera, mais pourrait ne pas fonctionner sur d'autres comme c'était le cas chez moi.

I vaut donc mieux faire ce code qui s'effectuera même si ElapsedMilliseconds() retourne une valeur négative mais ne s'effectuera que toutes les 100 millisecondes.

Code : Tout sélectionner

Global TimeElapsed.i=ElapsedMilliseconds()
If ElapsedMilliseconds()-TimeElapsed>100
      Debug "Ok"
      TimeElapsed=ElapsedMilliseconds()
EndIf

Re: ElapsedMilliseconds() ?????

Publié : mar. 06/oct./2015 10:47
par comtois
The elapsed time is stored as a DWORD value. Therefore, the time will wrap around to zero if the system is run continuously for 49.7 days.
Vu ici
Mais comme en PureBasic les nombres sont signés, ça te fait environ 24 jours avant d'avoir une valeur négative en retour si tu utilises un integer en x86 sinon faut essayer avec un quad.

Tu as fait ton test avec la version x86 ou x64 ?

Re: ElapsedMilliseconds() ?????

Publié : mar. 06/oct./2015 11:36
par microdevweb
Bonjour comtois,

X86 et comme je n’éteins presque jamais mon PC voila la réponse à ce bizarerie.

Merci

Re: ElapsedMilliseconds() ?????

Publié : mar. 27/oct./2015 16:21
par jambon
Serai t-il possible d'éviter ce problème en créant tout simplement une boucle, une valeur qui s'incrémente et un delay de une milliseconde ?

(bon ok je sort c'est barbare, et très cochon)
:mrgreen:

Re: ElapsedMilliseconds() ?????

Publié : mar. 27/oct./2015 16:50
par microdevweb
@jambon,

La seule chose à faire attention (pour un chronos) c'est d'affecté au lancement à la variable ElapsedMilliseconds(), et même si ElapsedMilliseconds() renvoie une valeur négative la différence des 2 valeurs sera correct