Gettickcount probleme?!?

choupierre Messages postés 12 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 29 décembre 2003 - 18 déc. 2003 à 01:55
choupierre Messages postés 12 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 29 décembre 2003 - 18 déc. 2003 à 13:06
Etant un debutant en programmation et un musicien, je decide de faire un metronome.Suite a different post je choisi d'utiliser la fonction gettickcount qui apparement est plus precise.Mais voila mon metronome n'est pas du tout regulier et apres avoir pas mal farfouillé je trouve que c'est plutot gettickcount qui n'est pas regulier.
Autre petite question : tout le monde parle de millieme de seconde avec cette fonction mais moi j'ai au moins dix chiffre apres les secondes?!?
J'ai .net 2003.
Un petit bout de code au cas ou j'aurai fait n'importe quoi :
Declaration :

Private Declare Function GetTickCount Lib "kernel32" () As Long

metronome irregulié:
While MouseButtons = MouseButtons.None
Application.DoEvents()
Label3.Text = GetTickCount
If GetTickCount > t1 + j * i Then
sndPlaySound("C:\Pierre\Visual basic\vbfrance_source_17484\beat2.wav", 1)
Label3.Text = GetTickCount
j = j + 1
End If
End While
(on voit clairement que les secondes ne sont pas reguliere avec ce code!!)(merci a DARKSIDIOUS pour la fonction Doevent ...bien utile)

3 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
18 déc. 2003 à 08:11
GetTickCount fonctionne en MILLISECONDES.

l'irregularite vient de ton algo....

pour un battement toutes les 2 secondes, fait :

Dim Interval As Long, Start As LongInterval 2000   '# 2000 millisecondes 2 secondes !!
Start = GetTickCount
While MouseButtons = MouseButtons.None
Application.DoEvents
If GetTickCount - Interval > Start Then
    Start = GetTickCount
sndPlaySound("C:\Pierre\Visual basic\vbfrance_source_17484\beat2.wav", 1)
End If
End While


By Renfield

[mailto:thomas_reynald@msn.com thomas_reynald@msn.com]

Aucune touche n'a ete blessee lors de la saisie de ce texte.......... ;)
0
hvb Messages postés 939 Date d'inscription vendredi 25 octobre 2002 Statut Membre Dernière intervention 27 janvier 2009 3
18 déc. 2003 à 10:47
en .net t'as pas besoin de definir l'api,
utilise Environment.TickCount, ça devrait theoriquement etre plus rapide .

De plus tu te retrouve avec un chiffre enorme car tu declarais Getickcount en Long... les Long en vb.net sont maintenant codé sur 8bits, le double de l'equivalent en vb6. (il me semble que c'est pour ça, j'ai compris ça il y a peu de temps, et ça explique plein de truc que je comprenais pas dans mes migrations ^^)
en la definissant en tant qu'integer, tu devrais recuperer les meme valeurs qu'en vb6

Hvb aka Batto
0
choupierre Messages postés 12 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 29 décembre 2003
18 déc. 2003 à 13:06
Merci beaucoup à tout les deux!!
En effet il suffit de passer long en integer et tout devient normal!!!!
J'aurai aimé comprendre pourquoi le long n'a pas la meme valeur que l'integer mais bon.
Mon debut de metronome est presque fini!
0
Rejoignez-nous