GetTickCount !! [Résolu]

Seth77 567 Messages postés mardi 30 avril 2002Date d'inscription 24 janvier 2014 Dernière intervention - 29 juil. 2005 à 13:54 - Dernière réponse : PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention
- 30 juil. 2005 à 12:22
Slu



quel est la valeur max que peut atteindre GetTickCount pour windows XP ?

Herve
Afficher la suite 

25 réponses

PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 30 juil. 2005 à 10:48
+3
Utile
ah oui, j'avais oublié... (ton explication précédente)
autrement dit, en comparaison (pour les lecteurs) à plus petite échelle, et que je sois corrigé si je fais erreur :

supposons qu'un type soit sur 4bits (et non pas 32 pour un long) :
0000 = 0
0010 = 2
0110 = 6
le maximum atteignable sera vu comme :
1111 => interprété comme "15" en non-signé
0111 => interprété comme "7" en non-signé
en en signé, de "7" à "-7" (selon si le 1er bits est 0 ou 1)
donc même syntaxe, et c'est bien le regard, l'interprétation qu'on fera de la même valeur retournée, qui sera prise en compte...

merci de ces précisions
PCPT
Cette réponse vous a-t-elle aidé ?  
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 30 juil. 2005 à 10:54
+3
Utile
on y était preque:
non signé: 0 => 15
signé: -8 => 7

ciao...
BruNews, MVP VC++
Cette réponse vous a-t-elle aidé ?  
Gobillot 3140 Messages postés vendredi 14 mai 2004Date d'inscription 31 mars 2015 Dernière intervention - 30 juil. 2005 à 10:55
+3
Utile
presque ça mais pas tout à fait

pour le négatif faut faire le complément à 2



1111 --> -1

1110 --> -2

1101 --> -3

etc ...



et pour le dépassement de capacité

1111 + 1 = 0000



donc

(15) + (1) donne 0 en non signé

(-1) + (1) donne 0 en signé

Daniel
Cette réponse vous a-t-elle aidé ?  
Gobillot 3140 Messages postés vendredi 14 mai 2004Date d'inscription 31 mars 2015 Dernière intervention - 29 juil. 2005 à 14:35
0
Utile
pas plus que la valeur d'un Long:



2 ^ 31 - 1

Daniel
Seth77 567 Messages postés mardi 30 avril 2002Date d'inscription 24 janvier 2014 Dernière intervention - 29 juil. 2005 à 16:00
0
Utile
merci

Herve
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 29 juil. 2005 à 17:46
0
Utile
NON !!!

GetTickCount() retourne un DWORD qui remplit donc les 32 bits.

ciao...
BruNews, MVP VC++
Gobillot 3140 Messages postés vendredi 14 mai 2004Date d'inscription 31 mars 2015 Dernière intervention - 29 juil. 2005 à 17:49
0
Utile
et 32 bits ça fait combien en Long signé ?

Daniel
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 29 juil. 2005 à 18:09
0
Utile
un nbr négatif dès que le bit 31 est positionné.

ciao...
BruNews, MVP VC++
Gobillot 3140 Messages postés vendredi 14 mai 2004Date d'inscription 31 mars 2015 Dernière intervention - 29 juil. 2005 à 18:14
0
Utile
et comme un négatif est plus petit qu'un positif

le maxi est donc bien 2 ^ 31 - 1



à moins d'être en net est de récupérer la valeur dans un 64 bits

en VB6 ça va poser des problèmes

Daniel
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 29 juil. 2005 à 18:32
0
Utile
pour autant la valeur retournée par GetTickCount (nbr de millisecondes depuis démarrage) peut être largement supérieure à 2 ^ 31 - 1.

Allez les gars, venez sur cppfrance, on ne connait pas tous ces problèmes.

ciao...
BruNews, MVP VC++
Seth77 567 Messages postés mardi 30 avril 2002Date d'inscription 24 janvier 2014 Dernière intervention - 29 juil. 2005 à 23:02
0
Utile
ajhhh pour etre encore plus precis c un DWORD non signe.

Herve
Gobillot 3140 Messages postés vendredi 14 mai 2004Date d'inscription 31 mars 2015 Dernière intervention - 29 juil. 2005 à 23:12
0
Utile
oui et comment tu vas l'utiliser ?



en VB6 je vois pas d'autre méthode:



Dim x As Long

Dim v As Variant



x = &HFFFF



v = CDec(x)

If x < 0 Then v = v + 2 ^ 32

MsgBox v






Daniel
Seth77 567 Messages postés mardi 30 avril 2002Date d'inscription 24 janvier 2014 Dernière intervention - 29 juil. 2005 à 23:15
0
Utile
ben comme ca ... ?!



dim t as variant

t=GetTickCount

Herve
Gobillot 3140 Messages postés vendredi 14 mai 2004Date d'inscription 31 mars 2015 Dernière intervention - 29 juil. 2005 à 23:17
0
Utile
dans mon exemple

tu vas obtenir -1

Daniel
Seth77 567 Messages postés mardi 30 avril 2002Date d'inscription 24 janvier 2014 Dernière intervention - 29 juil. 2005 à 23:21
0
Utile
c pas le but ...



ce que je ne comprenais c que dans la doc ils disent :



The GetTickCount function retrieves the number of milliseconds that have
elapsed since the system was started. It is limited to the resolution of the
system timer.

Herve
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 29 juil. 2005 à 23:31
0
Utile
Seth77 > un DWORD est par définition un 32 bits non signé sinon c'est un long.
Tous les 2 représentent la même chose, c'est juste la maniére de le regarder qui change.

ciao...
BruNews, MVP VC++
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 30 juil. 2005 à 00:55
0
Utile
limité à la résolution du timer system.
le timer system, çà ne veut que dire qu'on ne peut pas obtenir de valeur inférieure à 0, sachant que 0 = temps


T au démarrage.


et de toute manière, 32bits signés, donc positifs, donnent une valeurs de 4 294 967 293ms max, soient 49jours.
je ne doute pas que Billy et ses apôtres aient supposé que nous allions rebooter au moins 8fois par an....


PCPT
Seth77 567 Messages postés mardi 30 avril 2002Date d'inscription 24 janvier 2014 Dernière intervention - 30 juil. 2005 à 01:29
0
Utile
voila une reponse interessante ....49 jours il y a de la marge



et que se passe t il quand le timer depasse 4 294 967 293ms ? Remise a zero ? timer a -1 ? bug ? fin du monde ?


Herve
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 30 juil. 2005 à 10:04
0
Utile
j'espère la dernière solution, mais je dirais qu'il revient à zéro, ou qu'un autre le remplace, mais c'est pareil. le timer ne se gère pas lui-même.... ;)
PCPT
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 30 juil. 2005 à 10:05
0
Utile
pcpt > si on regarde un 32 bits comme étant signeé il ne peut justement PAS aller jusque 4 294 967 293 mais seulement 2 ^ 31 - 1 car au delà il est vu comme négatif, ce qui nous fera grosso modo dans les 24 jours maxi, ce que pas mal de monde dépasse tranquillement.

ciao...
BruNews, MVP VC++

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

GetTickCount !! - page 2