cs_sebman
Messages postés37Date d'inscriptionmercredi 29 mai 2002StatutMembreDernière intervention11 décembre 2010 24 déc. 2003 à 18:40
Merci de vos conseil !!!
Helkanen
Messages postés54Date d'inscriptionmardi 24 décembre 2002StatutMembreDernière intervention 9 juin 2004 19 déc. 2003 à 19:07
salut,
je te donne rien de spécial, mais je te conseille de remplacer un truc que je trouve horrible...
ceci :
//////////////////////////////////////////////////////////////////
// Boucle d'attente
// Permet d'afficher la fenetre le temps que le
// Microprocesseur compte jusqu'a 500 Millions !!!
nan moi ça me plait pas, paske sur un vieil ordi, il faudra 20 secondes, sur un récent, il faudra 200 ms... c'est pas génial
pourtant, rien qu'en utilisant les varables et les fonctions que tu emploies, tu peux faire qqch de plus propre...
j'explique :
while (tant que) l'heure est inférieure ou égale à l'heure de fin + 2500ms, on calcule l'heure (en utilisant tes propres fonctions et variables)
donc, quand l'heure actuelle est supérieure à l'heure de fin (du chrono) + 2500 ms, on quitte la fonction
et c'est bon
à part ça...
tu t'embêtes vraiment pour rien avec tes
converti= (((TempsDepart.time-1069000000)*1000)+ TempsDepart.millitm);
// 1 069 000 000 * 1 000 genere un nombre trop grand pour un type long
// c'est pour ca ke j'ote 1 069 000 000
// ceci rendra caduc le programme dans une 20taine annee
(de tte façon dans une 20aine d'années, t'auras eu le temps de réviser ton code !)
en effet, tu peux en qqe sorte doubler la capaciter des long, simplement en supprimant le signe :
les valeurs sont alors obligatoirement positives (cad pas de valeurs négatives)
tu déclares donc tes variables ainsi :
unsigned long converti, converti2... etc
et si tu veux absolument avoir un signe, ben laisse "long", voire "signed long"
voila
par contre, y'a pas à dire, utiliser l'api avec QueryPerformanceCounter et QueryPerformanceFrequency c'est le mieux, mais je suis encore bien trop nul pour faire ça (meme si c'est expliqué partout, le principale reste de comprendre)
bonne prog
Helkanen
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 18 déc. 2003 à 15:00
Il faut se servir des 2 fonctions citees plus haut pour un prog sur Windows, leur resolution est optimale.
Regarde MSDN pour details.
cs_sebman
Messages postés37Date d'inscriptionmercredi 29 mai 2002StatutMembreDernière intervention11 décembre 2010 18 déc. 2003 à 14:52
MErci BruNews
Mais je n'ai rien capter à ton message
Je te remercie d'avance pour le clarifier
Suis plus proche du débutant ke d'autre chose
N.B: me suis inspiréré de "La Bible du programmeur c/C++" de chez EYROLLES
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 18 déc. 2003 à 14:06
QueryPerformanceCounter
QueryPerformanceFrequency
Utiliser cela sur win32 pour la haute resolution.
24 déc. 2003 à 18:40
19 déc. 2003 à 19:07
je te donne rien de spécial, mais je te conseille de remplacer un truc que je trouve horrible...
ceci :
//////////////////////////////////////////////////////////////////
// Boucle d'attente
// Permet d'afficher la fenetre le temps que le
// Microprocesseur compte jusqu'a 500 Millions !!!
nan moi ça me plait pas, paske sur un vieil ordi, il faudra 20 secondes, sur un récent, il faudra 200 ms... c'est pas génial
pourtant, rien qu'en utilisant les varables et les fonctions que tu emploies, tu peux faire qqch de plus propre...
int Attente()
{
cout << "Waiting 2500 ms..." << endl;
while (converti <= converti2 + 2500) //attend 5 secondes
{
ftime(&TempsDepart);
converti = TempsDepart.time * 1000 + TempsDepart.millitm;
}
return 0;
}
j'explique :
while (tant que) l'heure est inférieure ou égale à l'heure de fin + 2500ms, on calcule l'heure (en utilisant tes propres fonctions et variables)
donc, quand l'heure actuelle est supérieure à l'heure de fin (du chrono) + 2500 ms, on quitte la fonction
et c'est bon
à part ça...
tu t'embêtes vraiment pour rien avec tes
converti= (((TempsDepart.time-1069000000)*1000)+ TempsDepart.millitm);
// 1 069 000 000 * 1 000 genere un nombre trop grand pour un type long
// c'est pour ca ke j'ote 1 069 000 000
// ceci rendra caduc le programme dans une 20taine annee
(de tte façon dans une 20aine d'années, t'auras eu le temps de réviser ton code !)
en effet, tu peux en qqe sorte doubler la capaciter des long, simplement en supprimant le signe :
les valeurs sont alors obligatoirement positives (cad pas de valeurs négatives)
tu déclares donc tes variables ainsi :
unsigned long converti, converti2... etc
et si tu veux absolument avoir un signe, ben laisse "long", voire "signed long"
voila
par contre, y'a pas à dire, utiliser l'api avec QueryPerformanceCounter et QueryPerformanceFrequency c'est le mieux, mais je suis encore bien trop nul pour faire ça (meme si c'est expliqué partout, le principale reste de comprendre)
bonne prog
Helkanen
18 déc. 2003 à 15:00
Regarde MSDN pour details.
18 déc. 2003 à 14:52
Mais je n'ai rien capter à ton message
Je te remercie d'avance pour le clarifier
Suis plus proche du débutant ke d'autre chose
N.B: me suis inspiréré de "La Bible du programmeur c/C++" de chez EYROLLES
18 déc. 2003 à 14:06
QueryPerformanceFrequency
Utiliser cela sur win32 pour la haute resolution.