GetTickCount !! [Résolu]

Messages postés
567
Date d'inscription
mardi 30 avril 2002
Dernière intervention
24 janvier 2014
- 29 juil. 2005 à 13:54 - Dernière réponse :
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
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
Afficher la suite 

25 réponses

Meilleure réponse
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
- 30 juil. 2005 à 10:48
3
Merci
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

Merci PCPT 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 87 internautes ce mois-ci

Meilleure réponse
Messages postés
21054
Date d'inscription
jeudi 23 janvier 2003
Dernière intervention
7 novembre 2014
- 30 juil. 2005 à 10:54
3
Merci
on y était preque:
non signé: 0 => 15
signé: -8 => 7

ciao...
BruNews, MVP VC++

Merci BruNews 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 87 internautes ce mois-ci

Meilleure réponse
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Dernière intervention
31 mars 2015
- 30 juil. 2005 à 10:55
3
Merci
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

Merci Gobillot 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 87 internautes ce mois-ci

Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Dernière intervention
31 mars 2015
- 29 juil. 2005 à 14:35
0
Merci
pas plus que la valeur d'un Long:



2 ^ 31 - 1

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

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

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

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

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

ciao...
BruNews, MVP VC++
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Dernière intervention
31 mars 2015
- 29 juil. 2005 à 18:14
0
Merci
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
Messages postés
21054
Date d'inscription
jeudi 23 janvier 2003
Dernière intervention
7 novembre 2014
- 29 juil. 2005 à 18:32
0
Merci
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++
Messages postés
567
Date d'inscription
mardi 30 avril 2002
Dernière intervention
24 janvier 2014
- 29 juil. 2005 à 23:02
0
Merci
ajhhh pour etre encore plus precis c un DWORD non signe.

Herve
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Dernière intervention
31 mars 2015
- 29 juil. 2005 à 23:12
0
Merci
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
Messages postés
567
Date d'inscription
mardi 30 avril 2002
Dernière intervention
24 janvier 2014
- 29 juil. 2005 à 23:15
0
Merci
ben comme ca ... ?!



dim t as variant

t=GetTickCount

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

tu vas obtenir -1

Daniel
Messages postés
567
Date d'inscription
mardi 30 avril 2002
Dernière intervention
24 janvier 2014
- 29 juil. 2005 à 23:21
0
Merci
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
Messages postés
21054
Date d'inscription
jeudi 23 janvier 2003
Dernière intervention
7 novembre 2014
- 29 juil. 2005 à 23:31
0
Merci
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++
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
- 30 juil. 2005 à 00:55
0
Merci
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
Messages postés
567
Date d'inscription
mardi 30 avril 2002
Dernière intervention
24 janvier 2014
- 30 juil. 2005 à 01:29
0
Merci
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
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
- 30 juil. 2005 à 10:04
0
Merci
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
Messages postés
21054
Date d'inscription
jeudi 23 janvier 2003
Dernière intervention
7 novembre 2014
- 30 juil. 2005 à 10:05
0
Merci
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.