Recherche périodique-gérer le temps

samki Messages postés 65 Date d'inscription jeudi 29 avril 2004 Statut Membre Dernière intervention 15 juillet 2004 - 5 juil. 2004 à 10:38
Picospicos Messages postés 23 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 8 juillet 2004 - 6 juil. 2004 à 16:00
Bonjour,
je dévellope une application qui doit verifier l'existance d'un fichier dans un répertoire périodiquement.
ce que je sais pas faire c'est de gérer le temps.j'ai bien defini la fonction qui me fait la recherche mais je sais pas comment ou koi utiliser pour la lancer chaque 2 secondes par exmeple
merci de m'aider.

10 réponses

Picospicos Messages postés 23 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 8 juillet 2004
5 juil. 2004 à 10:52
Il faut que tu utilises des timers de windows, regarde comment fonctionne les fonctions SetTimer et KillTimer dans le msdn.

J'espere que ca peut t'aider

++
Picos
0
samki Messages postés 65 Date d'inscription jeudi 29 avril 2004 Statut Membre Dernière intervention 15 juillet 2004
5 juil. 2004 à 12:20
Merci je vais voir sur msdn,il me manquait les mots clé!:)
tu peux pas me dire le principe de fonctionnement de ces fonctions?
0
Picospicos Messages postés 23 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 8 juillet 2004
5 juil. 2004 à 13:59
Tu vas devoir utiliser la fonction selon ce schema :

UINT_PTR pTimer=SetTimer(NULL,0, 2000, TimerProc);

A ce moment la, la fonction TimerProc que tu auras pris soin d'ecrire sera executer toutes les 2000ms.

Si tu fais :
KillTimer(NULL,pTimer);
Le mecanisme est stoppé (le timer est mort).

Essaie ca, verifie que le parametre NULL correspond à ce que tu souhaites.

++
Picos
0
samki Messages postés 65 Date d'inscription jeudi 29 avril 2004 Statut Membre Dernière intervention 15 juillet 2004
6 juil. 2004 à 11:54
j essayes d utiliser la fonction SEtTimer mais j ai une erreur comme koi la fonction prend 3 paramètre,
j ai mis alors :
UINT_PTR pTimer=SetTimer(0,3000,bGenerateAuto());
mais ca me donne tjrs une erreu au niveau du 3eme paramètre.
bGenerateAuto() est une fonction que j ai défini et qui rend un booléen.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
samki Messages postés 65 Date d'inscription jeudi 29 avril 2004 Statut Membre Dernière intervention 15 juillet 2004
6 juil. 2004 à 12:10
j ai fait :
pTimer=SetTimer(0,1000,(TIMERPROC)bGenerateAuto());
mais il execute la fonction une seule fois.
0
Picospicos Messages postés 23 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 8 juillet 2004
6 juil. 2004 à 14:13
Deux choses, la premiere est que tu devrais essayer d'enlever les parentheses apres bGenerateAuto, si tu les laisses alors le compilateur va considerer que tu veux executer la fonction et c'est sa valeur de retour qui sera prise comme argument (c'est pour ca qu'il ne l'execute qu'une seule fois, ce n'est pas grace au timer, mais smplement parcequ'il l'evalue pour trouver l'argument), dans ton cas c un booleen et ce n'est pas ce qu'attend SetTimer. Essaie donc ca :
pTimer=SetTimer(0,1000,bGenerateAuto);

Ensuite, si tu n'as besoin que de trois arguments c'est peut etre parceque tu utilises SetTimer comme method d'une classe et dans ce cas le premier argument NULL est inutile car implicite.

++
Picos
0
samki Messages postés 65 Date d'inscription jeudi 29 avril 2004 Statut Membre Dernière intervention 15 juillet 2004
6 juil. 2004 à 15:18
Qdj enleve les parenthéses alors ca me donne cette erreur
: error C2664: 'SetTimer' : cannot convert parameter 3 from 'bool (void)' to 'void (__stdcall *)(struct HWND__ *,unsigned int,unsigned int,unsigned long)'
0
Picospicos Messages postés 23 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 8 juillet 2004
6 juil. 2004 à 15:40
Le truc c'est que dans SetTimer tu ne peux pas mettre de fonction tu ne dois pouvoir mettre que des procedures (void). De toute facon, je ne vois pas trop comment tu pourrais exploiter la valeur de retour d'une fonction appelee periodiquement puisque une fois que tu as fait le SetTimer, ton code ne s'occupe plus de gerer la fonction.

En bref, mais une procedure void dans le SetTimer et trouve une autre solution pour traiter les valeurs que va manipuler ta procedure.

Je suis quasiment sur que ton probleme vient de la.

++
Picos
0
samki Messages postés 65 Date d'inscription jeudi 29 avril 2004 Statut Membre Dernière intervention 15 juillet 2004
6 juil. 2004 à 15:53
je viens de le faire mais c sans resultat,ca me donne l erreur suivante: error C2664: 'SetTimer' : cannot convert parameter 3 from 'void (void)' to 'void (__stdcall *)(struct HWND__ *,unsigned int,unsigned int,unsigned long)'.
0
Picospicos Messages postés 23 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 8 juillet 2004
6 juil. 2004 à 16:00
Faudrait que tu posts ton code parceque la ca devient paranormal

++
Picos
0
Rejoignez-nous