ElapsedMilliseconds() retourne valeur negatif
ElapsedMilliseconds() retourne valeur negatif
Bonjour je viens de decouvrir que ElapsedMilliseconds() retournait une valeur negatif lorsqu'un ordinateur restait allumé trop longtemps (plusieurs semaines)
Est ce normal ?
Merci
Est ce normal ?
Merci
plus personne sur ce forum n'a encore l'âge de la faire celle làDobro a écrit :j'ai pas dit qu'ils faisaient signe avec leur bit (e)


@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

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

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.
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 !
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).
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 !
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
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

Vive le thread-safe !
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

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

djes a écrit :Puis-je te demander ce que tu fais avec ces machines?

