[Debutant] Lancement regulier d'une tache, pb avec do/loop

Résolu
cs_zeguizmo Messages postés 138 Date d'inscription vendredi 1 août 2003 Statut Membre Dernière intervention 16 juillet 2009 - 14 févr. 2005 à 19:46
phantom_2005 Messages postés 184 Date d'inscription mercredi 8 décembre 2004 Statut Membre Dernière intervention 1 septembre 2010 - 15 févr. 2005 à 10:13
Salut a tous,

J'ai un petit pb :

Je fait un chtit prog qui me lance une tache toute les 1/2 heures. J'utilise pr cela cette fonction :

Dim minute, minutefix As Integer
Dim pathwow, pathwdb As String
minutefix = Mid(Time, 4, 2)
pathwow = Dir1.Path
pathwdb = Dir1.Path & "\wdb\*.*"



Do


minute = Mid(Time, 4, 2)If minute minutefix Or minute minutefix + 30 Then

supprimerfichier (pathwdb)


End If


Loop

La fonction supprimerfichier est une public sub qui fonctionne tres bien, mes paths sont ok.

Le problème est le suivant : lorsque je lance le programme (il tourne dans le systray) eh ben je ne peux plus l'arreter, normal puisqu'il est sous do/loop.

N'existe-t-il pas une alternative à cette fonction ? Est ce que incrémenter un compteur avec un timer me permettra d'arreter le programme quand je veux ?

Merci :)

ZeGuizmo

9 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
14 févr. 2005 à 21:53
Pour ton test rajoute un DoEvents dans le Do-Loop, à la fin par exemple



Chez moi, effectivement le code équivalant à supprimerfichier s'éxecute en boucle pendant toute la minute


Sinon tu peut essayer ce code en collant un timer avec un interval de 10000



Private Sub Timer1_Timer()

Static cnt_timer As Integer



If cnt_timer >= 180 Then



cnt_timer = 0

supprimerfichier()

Else



cnt_timer = cnt_timer + 1



End If

End Sub



---> 180*10000 ms ça fait 30min je crois



<hr size="2" width="100%">Si le cerveau était assez simple pour que nous puissions le comprendre,

nous serions assez bête pour ne pas le comprendre malgré tout.
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
15 févr. 2005 à 07:54
Lors de la conception de ta feuille tu prend soin donc pour ton object
Timer de mettre les propriétés Interval sur 10000 et Enabled sur False



Ensuite sur l'évènement de ton bouton "Mache" tu fais : Timer1.Enabled=True


Ensuite sur ton menu dans le systray tu fait Timer1.Enabled=False
pour arreter le timer et tu peux sortir de ton programme comme tu veux




<hr size="2" width="100%">Si le cerveau était assez simple pour que nous puissions le comprendre,

nous serions assez bête pour ne pas le comprendre malgré tout.
3
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
14 févr. 2005 à 20:39
marche avec un Timer.Interval sous-multiple de 30 minutes

Private Sub Timer1_Timer()
' Text1 = Time
If (Time * 48) = Fix(Time * 48) Then
supprimerfichier (pathwdb)
End If
End Sub

Daniel
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
14 févr. 2005 à 20:40
Salut,

Si tu tiens à ton do ... loop, insère un test :

dans un module : public test as boolean

dans ton do ... loop : if test = true then exit do

je suppose que tu as un menu sur ton icone systray donc tu ajoutes un item "Arrêter" dans lequel tu mettras : test=true.

Sinon, un timer fera la même chose mais n'enlèvera pas l'obligation de le désactiver dans l'item du menu systray par timer.interval=0

Loup Gris
0

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

Posez votre question
cs_zeguizmo Messages postés 138 Date d'inscription vendredi 1 août 2003 Statut Membre Dernière intervention 16 juillet 2009
14 févr. 2005 à 21:09
Merci pour vos réponses,

Je tiens a mon do/loop (parcequ'en fait j'ai pas compris le *48 du timer, je c pas si c pr l'exemple ou quoi .. et en plus je veux minimiser les calculs)

Mais j'ai encore un pb, euhh deux en fait.

Premièrement, quand je regarde ma source je me dis que pendant une minute (celle qui correspond a la demie heure d'écoulée) il devrait me supprimer mes fichiers continuellement (ou si je lui demande de m'afficher une msgbox, il devrait m'en afficher plein pendant une minute non ?) et pourtant il ne le fait pas.
En fait je ne veux pas que cela se produise mais pourquoi ca ne se produit pas ?

Deuxièmement, j'ai beau rajouter un test, je ne peux meme pas cliquer sur l'icone de mon systray, le prog tourne tt seul dans son do/loop et ne fait rien d'autre, pas meme m'afficher les menus quand je clique sur l'icone)

Voila mci pr vos éclaircissements

A+

ZeGuizmo
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
14 févr. 2005 à 21:51
Alors, commence par mettre doevents dans ta boucle do ... loop.
Au moins ça permettra au systeme de gérer autre chose.

Loup Gris
0
cs_zeguizmo Messages postés 138 Date d'inscription vendredi 1 août 2003 Statut Membre Dernière intervention 16 juillet 2009
15 févr. 2005 à 00:23
Euhhh en fait j'ai jamais utilisé de Timer, comment je fait pour que quand je clique sur un bouton mon timer se lance ?

ZeGuizmo
0
cs_zeguizmo Messages postés 138 Date d'inscription vendredi 1 août 2003 Statut Membre Dernière intervention 16 juillet 2009
15 févr. 2005 à 09:59
ah ok, tout simplement, je vous remercie bien pour les réponses fournies parcequ'elles m'ont toutes aidées :)

Juste le bouton reponse acceptée sert a quoi ? Parceque si c pr svous gagner des pts ou autres, je les accepte tous, elles m'ont toutes ete utiles.

ZeGuizmo
0
phantom_2005 Messages postés 184 Date d'inscription mercredi 8 décembre 2004 Statut Membre Dernière intervention 1 septembre 2010 1
15 févr. 2005 à 10:13
C'est pas pour gagner des points, c'est pour que ce soit plus facile a se retrouver dans le forum.

Une solution trouvée a un problème = ligne en vert dans le forum

@+

--------------------------------------------------------------------------------
Phantom_2005
0
Rejoignez-nous