Doevents

CDOLL Messages postés 11 Date d'inscription samedi 16 février 2002 Statut Membre Dernière intervention 4 octobre 2002 - 12 avril 2002 à 23:33
Neo.balastik Messages postés 796 Date d'inscription jeudi 17 mai 2001 Statut Membre Dernière intervention 5 mai 2009 - 16 avril 2002 à 09:45
Est-ce vrai que :
for i=1 to 1000
DoEvents
next i 

est egal a 1 secondes ???

2 réponses

leptidev Messages postés 206 Date d'inscription mercredi 30 janvier 2002 Statut Membre Dernière intervention 4 décembre 2007
13 avril 2002 à 00:58
ben, c simple, tu teste ça toi même au lieu de dire n'importe quoi !
0
Neo.balastik Messages postés 796 Date d'inscription jeudi 17 mai 2001 Statut Membre Dernière intervention 5 mai 2009 7
16 avril 2002 à 09:45
Salut,

Et bien non !
Bouclé 1000x n'équivaut pas à une seconde.

Tout dépend de la fréquence de ton CPU. Ca marchera peut-être sur le tien, mais pas sur un autre plus ou moins rapide.

Il est illusoire de concevoir une notion de temps avec le système que tu appliques.

Un exemple: il est très fréquent que lorsque l'on test un vieux (très vieux) jeu sur un pc actuel, que celui-ci soit injouable. En effet, la vitesse du CPU étant tellement gigantesque par rapport à ce qu'il y avait avant (quelques Mhz), que le jeu est bcp trop rapide.

Pour créer des boucles d'attente, il faut tester un temps de départ avec un temps d'arrivée.

Dans ta boucle, le DoEvents ne sert qu'a rendre la main au système à chaque passage dans la boucle. Ce qui n'est pas conseillé du tout. Il est préférable de rendre la main après x tours (10 par exemple).

Exemple de code (pause de 2 secondes):

Dim Duration As Single
Dim startTime As Single

Duration = 2
startTime = Timer

While Timer < startTime + duration
DoEvents
Wend

Tchao

NéoB
0
Rejoignez-nous