Temporisation? [Boulet] - C++ - Programmation
Marsh Posté le 10-06-2003 à 15:50:24
Skylight a écrit : while |
Non, pas une boucle une tempo
Marsh Posté le 10-06-2003 à 15:50:41
Tu pourais preciser quel environement tu utilise, tu fait du C, du C++, sous windows (win32??? MFC???) sous linux???
Marsh Posté le 10-06-2003 à 15:52:27
Skylight a écrit : while ( i < 10000000000000000 ){ |
C'est nul...tu n'as aucun controle du temps qui s'écoule!
Marsh Posté le 10-06-2003 à 15:53:09
ReplyMarsh Posté le 10-06-2003 à 15:53:54
Skylight a écrit : while ( i < 10000000000000000 ){ |
Ok je l'ai fait et j'ai l'impression que la boucle s'effectue
dès que la fenetre s'ouvre! de plus c'est une tempo
imprécise...
PS:C++/Win32
Marsh Posté le 10-06-2003 à 15:55:37
Code :
|
sinon va chercher sur google
y'a pleins de cours C++ sur le net
Marsh Posté le 10-06-2003 à 15:57:46
Joel F a écrit : euh y a pas sleep ?? |
+1!
ou wait, je confonds tjrs les 2 (qui n'ont en fait rien à voir)
Marsh Posté le 10-06-2003 à 15:59:08
Tu fait un SetTimer(hwnd, ID_TIMER, temps_en_ms, NULL) puis dans l'evenement WM_TIMER tu fait le code associé
Regarde msdn pour voir la syntaxe...
Marsh Posté le 10-06-2003 à 16:00:05
SetTimer c windows pur ... sleep c + ANSI non ?
ca depend de sa plateforme
Marsh Posté le 10-06-2003 à 16:00:30
Joel F a écrit : euh y a pas sleep ?? |
Oui c vrai tu peu faire un sleep aussi mais ton programme ne feras plus rien pendant ce temps.
Marsh Posté le 10-06-2003 à 16:03:22
Ah ca ca depend de ce qu'il veut faire ...
Mais bon le SetTimer
Marsh Posté le 10-06-2003 à 16:03:43
il faut utiliser GetTickCount c une horloge qui tourne en permanence.
Marsh Posté le 10-06-2003 à 16:04:38
Joel F a écrit : SetTimer c windows pur ... sleep c + ANSI non ? |
J'pense pas que sleep soit ANSI non plus. Et puis, surtout, c pas la même chose. Sleep bloque le process pendant un temps donné. C'est pas top pour ce qu'il veut faire: son interface sera figée pdt tt le temps du Sleep. Alors que SetTimer fait que l'appli reçoit un message WM_TIMER toutes les x milisecondes. Il ne reste plus qu'a traiter ce message dans la boucle des messages.
Marsh Posté le 10-06-2003 à 16:05:12
Bis repetita ca depend donc de son appli, je met donc en attente de + d'infos.
Marsh Posté le 10-06-2003 à 16:05:22
Joel F a écrit : Ah ca ca depend de ce qu'il veut faire ... |
Pkoi le SetTimer ???
Marsh Posté le 10-06-2003 à 16:05:36
Joel F a écrit : SetTimer c windows pur ... sleep c + ANSI non ? |
sous win32, SetTimer est un timer qui utilise un méchanisme de callback alors que Sleep() permet de suspendre l'excecution.
Le pendant de SetTimer sous linux, ce serait plutot un setitimer, qui génère un signal ALARM une fois le timer expiré.
Mais dans les 2 cas (SetTimer et setitimer), la fonction n'est pas blocante.
Marsh Posté le 10-06-2003 à 16:06:40
sowhatin22 a écrit : |
Ah interresant, je note .
Marsh Posté le 10-06-2003 à 16:06:52
je me repete la meilleure solution qui est en plus la plus simple est d'utilisé la fonction GetTickCount qui est une horloge.
Marsh Posté le 10-06-2003 à 16:07:30
GetTickCount
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. If you need a higher resolution timer, use amultimedia timer or a high-resolution timer.
DWORD GetTickCount(VOID)
Parameters
This function has no parameters.
Return Values
The return value is the number of milliseconds that have elapsed since the system was started.
Remarks
The following table describes the resolution of the system timer.
System Resolution
Windows NT 3.5 and later The system timer runs at approximately 10ms.
Windows NT 3.1 The system timer runs at approximately 16ms.
Windows 95 and later The system timer runs at approximately 55ms.
The elapsed time is stored as a DWORD value. Therefore, the time will wrap around to zero if the system is run continuously for 49.7 days.
Windows NT: To obtain the time elapsed since the computer was started, look up the System Up Time counter in the performance data in the registry key HKEY_PERFORMANCE_DATA. The value returned is an 8-byte value.
Marsh Posté le 10-06-2003 à 16:07:55
euh sleep(1000) ca va aussi c facile, la qustion est de savoir si
il veut une tempo bloquante ou pas ( a moins que j'ai mal compris et la effectivement , gettickcount serait adequat)
Marsh Posté le 10-06-2003 à 16:09:42
oui c vrai que sleep c facile aussi . enfin comme on c pas trop c qu'il veut....
Marsh Posté le 10-06-2003 à 16:46:38
roromaino a écrit : oui c vrai que sleep c facile aussi . enfin comme on c pas trop c qu'il veut.... |
Trois seconde, je ne suis pas toujours connecté sur hardware!
(enfin presque )
donc je ne veux pas une tempo blocante, donc la solution
de roromaino me convient le mieux, merci à tous
si vous avez d'autres idées...
@+
Marsh Posté le 10-06-2003 à 17:08:07
ok ba je te donne un exemple tout con:
double start,stop;
start=GetTickCount();
Code :
|
Marsh Posté le 10-06-2003 à 17:09:28
j'ai foiré mes balises enfin t'as compris c po dur. Le resultat est en ms et il faut include windows.h
Marsh Posté le 10-06-2003 à 17:13:06
Noobite a écrit : |
ah la vache, ce que j'ai ecris c immonde
c'est bien entendu un for qu'il fo ..
Marsh Posté le 10-06-2003 à 17:15:49
Skylight a écrit : ah la vache, ce que j'ai ecris c immonde |
C'est aussi immonde!
Marsh Posté le 10-06-2003 à 17:19:00
roromaino a écrit : ok ba je te donne un exemple tout con:
|
c'est incroyable cette manie de ne pas utiliser les types donnés par la doc (alors que tu l'as puisque tu l'as cité plus haut). La fonction GetTickCount renvoie une valeur de type DWORD. Pourquoi ne pas l'utiliser? C'est pourtant aussi simple.
Marsh Posté le 10-06-2003 à 17:24:44
exact tu as tout a fait raison, j'ai fait ca rapido pour qu'il comprenne..
Marsh Posté le 10-06-2003 à 15:46:26
quelle fonction permet de faire une tempo, exemple:
Au bout de x secondes on souhaite faire apparaitre
un message ou executer une autre fonction,...
Merci d'avance
---------------
.: [Knowledge Is Power] || [Mon FeedBack] :.