GetTickCount !!

Résolu
Seth77 Messages postés 572 Date d'inscription mardi 30 avril 2002 Statut Membre Dernière intervention 4 mai 2020 - 29 juil. 2005 à 13:54
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 30 juil. 2005 à 12:22
Slu



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

Herve

25 réponses

PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
30 juil. 2005 à 10:48
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
3
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 19
30 juil. 2005 à 10:54
on y était preque:
non signé: 0 => 15
signé: -8 => 7

ciao...
BruNews, MVP VC++
3
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
30 juil. 2005 à 10:55
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
3
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
29 juil. 2005 à 14:35
pas plus que la valeur d'un Long:



2 ^ 31 - 1

Daniel
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Seth77 Messages postés 572 Date d'inscription mardi 30 avril 2002 Statut Membre Dernière intervention 4 mai 2020 1
29 juil. 2005 à 16:00
merci

Herve
0
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 19
29 juil. 2005 à 17:46
NON !!!

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

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

Daniel
0
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 19
29 juil. 2005 à 18:09
un nbr négatif dès que le bit 31 est positionné.

ciao...
BruNews, MVP VC++
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
29 juil. 2005 à 18:14
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
0
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 19
29 juil. 2005 à 18:32
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++
0
Seth77 Messages postés 572 Date d'inscription mardi 30 avril 2002 Statut Membre Dernière intervention 4 mai 2020 1
29 juil. 2005 à 23:02
ajhhh pour etre encore plus precis c un DWORD non signe.

Herve
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
29 juil. 2005 à 23:12
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
0
Seth77 Messages postés 572 Date d'inscription mardi 30 avril 2002 Statut Membre Dernière intervention 4 mai 2020 1
29 juil. 2005 à 23:15
ben comme ca ... ?!



dim t as variant

t=GetTickCount

Herve
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
29 juil. 2005 à 23:17
dans mon exemple

tu vas obtenir -1

Daniel
0
Seth77 Messages postés 572 Date d'inscription mardi 30 avril 2002 Statut Membre Dernière intervention 4 mai 2020 1
29 juil. 2005 à 23:21
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
0
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 19
29 juil. 2005 à 23:31
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++
0
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
30 juil. 2005 à 00:55
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
0
Seth77 Messages postés 572 Date d'inscription mardi 30 avril 2002 Statut Membre Dernière intervention 4 mai 2020 1
30 juil. 2005 à 01:29
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
0
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
30 juil. 2005 à 10:04
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
0
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 19
30 juil. 2005 à 10:05
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++
0