[Boulet]Temporisation?

Temporisation? [Boulet] - C++ - Programmation

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 :jap:
 
[:bottedumal]


---------------
.: [Knowledge Is Power] || [Mon FeedBack] :.
Reply

Marsh Posté le 10-06-2003 à 15:46:26   

Reply

Marsh Posté le 10-06-2003 à 15:48:11    

while :??:

Reply

Marsh Posté le 10-06-2003 à 15:50:24    


 
Non, pas une boucle une tempo  :pfff:  
 
[:bottedumal]


---------------
.: [Knowledge Is Power] || [Mon FeedBack] :.
Reply

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???

Reply

Marsh Posté le 10-06-2003 à 15:50:55    

while ( i < 10000000000000000  ){
 
}
 
:??:

Reply

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!


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 10-06-2003 à 15:53:09    

skeye a écrit :


C'est nul...tu n'as aucun controle du temps qui s'écoule!

Tu tatonnes ! [:aloy]

Reply

Marsh 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!  :pfff: de plus c'est une tempo  
imprécise... :sweat:  
 
PS:C++/Win32


---------------
.: [Knowledge Is Power] || [Mon FeedBack] :.
Reply

Marsh Posté le 10-06-2003 à 15:55:37    

Code :
  1. for(int i=0;i<1000000000000000000;i++)
  2. {
  3. //peut etre que ca marche si t'as un pc assez lent lol
  4. }


sinon va chercher sur google
y'a pleins de cours C++ sur le net

Reply

Marsh Posté le 10-06-2003 à 15:56:45    

euh y a pas sleep ??

Reply

Marsh Posté le 10-06-2003 à 15:56:45   

Reply

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)


---------------
Can't buy what I want because it's free -
Reply

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...

Reply

Marsh Posté le 10-06-2003 à 16:00:05    

SetTimer c windows pur ...  sleep c + ANSI non ?
ca depend de sa plateforme :P

Reply

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.

Reply

Marsh Posté le 10-06-2003 à 16:03:22    

Ah ca ca depend de ce qu'il veut faire ...
Mais bon le SetTimer :/

Reply

Marsh Posté le 10-06-2003 à 16:03:43    

il faut utiliser GetTickCount c une horloge qui tourne en permanence.

Reply

Marsh Posté le 10-06-2003 à 16:04:38    

Joel F a écrit :

SetTimer c windows pur ...  sleep c + ANSI non ?
ca depend de sa plateforme :P


 
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.

Reply

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.

Reply

Marsh Posté le 10-06-2003 à 16:05:22    

Joel F a écrit :

Ah ca ca depend de ce qu'il veut faire ...
Mais bon le SetTimer :/


 
Pkoi le SetTimer :/???

Reply

Marsh Posté le 10-06-2003 à 16:05:36    

Joel F a écrit :

SetTimer c windows pur ...  sleep c + ANSI non ?
ca depend de sa plateforme :P


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.

Reply

Marsh Posté le 10-06-2003 à 16:06:40    

sowhatin22 a écrit :


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.


 
Ah interresant, je note .

Reply

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.

Reply

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.  
 

Reply

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)

Reply

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....

Reply

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  :D )
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...
@+
[:bottedumal]


---------------
.: [Knowledge Is Power] || [Mon FeedBack] :.
Reply

Marsh Posté le 10-06-2003 à 17:08:07    

ok ba je te donne un exemple tout con:  
double start,stop;
start=GetTickCount();

Code :
  1. while (1){
  2. //code
  3. stop=GetTickCount();
  4. if ((stop-start)>3000)
  5. {
  6. //code
  7. }
  8. }


Reply

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

Reply

Marsh Posté le 10-06-2003 à 17:13:06    

Noobite a écrit :


 
Ok je l'ai fait et j'ai l'impression que la boucle s'effectue  
dès que la fenetre s'ouvre!  :pfff: de plus c'est une tempo  
imprécise... :sweat:  
 
PS:C++/Win32

ah la vache, ce que j'ai ecris c immonde :D
 
c'est bien entendu un for qu'il fo ..

Reply

Marsh Posté le 10-06-2003 à 17:15:49    

Skylight a écrit :

ah la vache, ce que j'ai ecris c immonde :D
 
c'est bien entendu un for qu'il fo ..


 :heink:  
C'est aussi immonde! [:ddr555]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 10-06-2003 à 17:19:00    

roromaino a écrit :

ok ba je te donne un exemple tout con:  
double start,stop;
start=GetTickCount();

Code :
  1. while (1){
  2. //code
  3. stop=GetTickCount();
  4. if ((stop-start)>3000)
  5. {
  6. //code
  7. }
  8. }


 


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.


Message édité par SoWhatIn22 le 10-06-2003 à 17:19:50
Reply

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..

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed