ElapsedMilliseconds() retourne valeur negatif

Archive.
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

ElapsedMilliseconds() retourne valeur negatif

Message par Thyphoon »

Bonjour je viens de decouvrir que ElapsedMilliseconds() retournait une valeur negatif lorsqu'un ordinateur restait allumé trop longtemps (plusieurs semaines)
Est ce normal ?
Merci
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

oui !

car les nombres trop grands font activer le bit de signe !(en binaire :D )
du coup ça passe en negatif !
j'ai pas dit qu'ils faisaient signe avec leur bit (e)
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

Dobro a écrit :j'ai pas dit qu'ils faisaient signe avec leur bit (e)
plus personne sur ce forum n'a encore l'âge de la faire celle là
:0: tusors:

@Typhoon
Pour ca tu ne peux pas faire grand chose... il faudrait passer par des entiers longs non signés (toujours positifs) mais pour ca on n'a pas d'info... peut etre la version 4
*joint tes mains et prie comme beaucoup ici bas :lol:*

en attendant tu peux émuler des entiers non signés en passant par des nombres réels... si le nombre est négatif, il faut ajouter un décallage mais j'ai la flemme de chercher la valeur...

regarde peut etre du côté de #MinLong et #MaxLong

Dri :(
LeCyb
Messages : 273
Inscription : dim. 26/déc./2004 20:49

Message par LeCyb »

Selon mon calcul après 24 jours 20 heures 31 min 23 sec et 647 ms la fonction donne un nombre négatif car un entier signé va de zéro à 2147483647 en positif et ensuite si tu ajouttes 1 il va en négatif (-2147483648).

Je rajoutterais que tu es de toute façon limité à 4294967295 ms avec un entier non-signé sur 32bits, ce qui fait 49 jours 17 heures 2 min 47 sec 296 ms.
Après quoi la milliseconde d'après tu reviendrais à zéro.
Dernière modification par LeCyb le mer. 21/sept./2005 18:15, modifié 2 fois.
Vive le thread-safe !
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message par Thyphoon »

Merci pour tout !! En tout cas je suis contant je suis pas fou lollllllll
LeCyb
Messages : 273
Inscription : dim. 26/déc./2004 20:49

Message par LeCyb »

Sur le msdn:
http://msdn.microsoft.com/library/defau ... kcount.asp

"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."

Mais tu peux tenter d'utiliser la fonction QueryPerformanceCounter de l'API Win32 qui te donnera un pointeur vers un entier sur 8 bytes (64bits quoi).
Vive le thread-safe !
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message par Thyphoon »

Merci beaucoup pour toute ces precisons je vais aller voir ça
LeCyb
Messages : 273
Inscription : dim. 26/déc./2004 20:49

Message par LeCyb »

Donc sur 64bits tu aurais un entier non-signé de 0 à 18446744073709551615.

Ce qui ferait un maximum de 58494 millénaires 2 siècles 417 années 129 jours
14 heures 25 min 51 sec 615 ms, et si tu arrives à faire tourner Windows autant de temps je te paye un pot au paradis lol.

Si ça convient pas on pourra toujours fait une suggestion à Fred pour des nombres sur 128 bits :D
Vive le thread-safe !
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message par Thyphoon »

LeCyb a écrit :Donc sur 64bits tu aurais un entier non-signé de 0 à 18446744073709551615.

Ce qui ferait un maximum de 58494 millénaires 2 siècles 417 années 129 jours
14 heures 25 min 51 sec 615 ms, et si tu arrives à faire tourner Windows autant de temps je te paye un pot au paradis lol.

Si ça convient pas on pourra toujours fait une suggestion à Fred pour des nombres sur 128 bits :D
:lol:
vas savoir j'ai un pc 80/86 qui doit tourner depuis plus 20 ans 24 sur 24 sans aucun plantage et j'ai eu un A2000 qui a tourné 15 ans 24/24 sans aucune panne...et il marche toujous ! Parcontre mon pc acheté il y a 1 ans a déjà eu 2 pannes... :roll:
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Message par djes »

Puis-je te demander ce que tu fais avec ces machines?
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Il teste son PC parce qu'il a l'impression qu'il est complètement allumé!

:jesors:
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

il sait pas comment on les arretes ! :D
voila la raison , c'etait tout simple pourtant ! :D

pour sa tele , sa voiture , c'est pareil ! :D
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message par Thyphoon »

djes a écrit :Puis-je te demander ce que tu fais avec ces machines?
:lol: Et bien ils servent pour la gestion du chauffage de la maison. il y a un petit programme qui tourne en tache de fond et qui s'occupe de choisir quel source d'energie est la plus interessante panneau solaire, pompe a chaleur aire-eau, pompe a chaleur eau-eau... pour chauffer un balon solaire. Et puis ça analyse les sondes de temperature dans la maison et s'adapte en fonction de la temperature. Bref de la domotique et de la repartition d'energie :P
Répondre