var Valeur : Int64; QueryPerformanceCounter(Valeur); La fonction renvoi dans Valeur.
Attention aux résultat inattendus ! cette fonction renvoie un booléen si elle a trouvé un compteur haute résolution : "The QueryPerformanceCounter function retrieves the current value of the high-resolution performance counter, if one exists." Il serait plus exact d'écrire : if not QueryPerformanceCounter(Valeur) then Valeur :=GetTickCount;
ouais, mais ca c pour les vieu 386,..; d'après ce ke l'on ma di :) normalement les processeur d'aujourd'hui ca marche :)
avec une unité bien plus précise ke la milliseconde ==> quel unité? J'ai tenter de trouver, apparament c'est GetTickCount * 3579 Mais je suis pas sur!
je pense que C par rapport au cycle d 'horloge car pour avoir un nombre en ms il fo le diviser par la frequence calculé du CPU = freq,deb,fin : int64; QueryPerformanceFrequency(freq); QueryPerformanceCounter(deb); // data QueryPerformanceCounter(fin); FormatFloat('0.000000 ms', (fin-deb)/freq*1000); on aura le chiffre exact en ms
Bien utile cette source .. et simple en plus ... 8/10 j'ai remarqué une chose ; Ayant voulu vérifier les dires de msx j'ai créer un nouveau projet avec un bouton et un timer. Le code du bouton : QueryPerformanceFrequency(freq); QueryPerformanceCounter(deb); timer1.enabled := true; //plus précis d'actiover le timer ici le code du timer (interval fixé a 1000 ms) : QueryPerformanceCounter(fin); Timer1.Enabled := false; ShowMessage(FormatFloat('0.000000 ms', (fin-deb)/freq*1000)); J'ai cliqué plusieur fois sur le bouton et le temps que le timer m'affiche varie de 993 ms à 1007 ms en une belle courbe gaussienne ... C'est normal qu'il puisse se planter de 7 ms (j'ai même été à 8 ms : 992 ms) ???
Se souvenir du profil
Mot de passe oublié ? / Activation de compteCréer un compte
1 872 737 membres 168 nouveaux aujourd'hui 16 150 membres club