Boucles conditions jusqu'à avec une limite de temps

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Misa10
Niveau 3
Niveau 3
Messages : 44
Enregistré le : sam. 14 avr. 2018 12:50
Status : Hors ligne

Boucles conditions jusqu'à avec une limite de temps

#1

Message par Misa10 »

Bonjour en faite j'ai besoin d'aide car je voudrais créer une boucle avec conditions jusqu'à donc :

Code : Tout sélectionner

Do 

Until 
Mais je veux que si cette boucle au bout d'un certain temps défini si la condition n'est pas rempli dans ce temps là la boucle s'arrête.

Exemple la boucle do until la condition est rempli donc ça lance les lignes de code . Normal quoi .

Mais exemple je décide que do until dure 5 secondes max si la condition après 5 secondes n'est pas rempli ça sort de cette boucle et lis d'autre lignes de code .

J'ai encore rien n'écrit sur le papier c'est juste dans ma tête donc désolé de pas vous donner un bout de code . Merci d'avance pour ceux qui vont m'aider.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11638
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: Boucles conditions jusqu'à avec une limite de temps

#2

Message par Tlem »

Bonsoir, voici la version papier avec presque tout les éléments. ^^

1 - Initialisation d'un timer juste avant de rentrer dans la boucle.
2 - Dans la boucle, un contrôle du timer.
3 - Si timer > valeur définie alors on exit de la boucle.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Misa10
Niveau 3
Niveau 3
Messages : 44
Enregistré le : sam. 14 avr. 2018 12:50
Status : Hors ligne

Re: Boucles conditions jusqu'à avec une limite de temps

#3

Message par Misa10 »

Bonsoir donc en suivant ton idée j'ai eu une idée mais je suis pas sûr pas que ça va marcher .

Code : Tout sélectionner


$time = 1
Do 
 
 $time +1
 $example = pixelsearch ...
 
 
Until $example = 1 or $time = 5000


En gros c'est un exemple mais donc quand le pixelsearch a trouvé la couleur donc la boucle se fini mais pour faire un timer la variable Time rajouterai à chaque fois que la boucle se relance et donc s'arrête à 5000 logiquement la boucle va se relancer chaque seconde donc ça ferai 5000 seconde ?

Sinon j'ai vu les deux fonctions timerinit et timerdiff qui pourrait être intéressante mais j'ai jamais utilisé et je ne suis pas sur mon pc pour l'instant donc j'ai pas pu test pour voir comment les deux fonctions marche .
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11638
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: Boucles conditions jusqu'à avec une limite de temps

#4

Message par Tlem »

Bon, alors c'est pas tout a fait ça.

Vous devez d'abord TimerInit. Ensuite votre boucle Do, et dans celle-ci faire un TimerDiff pour vérifier si $fDiff est plus grand que $TimerMax pour ExitLoop. ^^
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
jl56
Niveau 7
Niveau 7
Messages : 384
Enregistré le : mer. 24 oct. 2007 22:42
Localisation : 56000
Status : Hors ligne

Re: Boucles conditions jusqu'à avec une limite de temps

#5

Message par jl56 »

Bonjour,

voici un exemple,


#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("Form1", 615, 437, 192, 124)
Global $inp_temps_restant = GUICtrlCreateInput("", 137, 56, 121, 21)
Global $Quitter = GUICtrlCreateButton("Quitter", 166, 180, 75, 25)
Global $Label1 = GUICtrlCreateLabel("Temps restant", 28, 60, 71, 17)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

Local $debut_timer = TimerInit(); initialisation du timer
Local $temps = 10; valeur de temps en seconde
Local $memo_reste = -1


Do
   $msg = GUIGetMsg()
   $reste = TimerDiff($debut_timer) ; différence en millisecondes

   $reste = Int($reste / 1000) ;on transforme le reste en  secondes entieres


   If $reste <> $memo_reste Then ; on modifie l'affichage que toutes les secondes

      GUICtrlSetData($inp_temps_restant, $reste & "/" & $temps)
      $memo_reste = $reste ; on memorise que c'est affiché sur la seconde en cours

   EndIf


   If $reste >= $temps Then ExitLoop ; si le temps est dépassé ou égal on sort

   If $msg = $Quitter Then ExitLoop

   Sleep(20)

Until $msg = $GUI_EVENT_CLOSE

A+

JL56
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 1945
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: Boucles conditions jusqu'à avec une limite de temps

#6

Message par TommyDDR »

Je pense que le but de Tlem était de ne pas donner le pain directement dans la bouche de Misa10 mais de lui faire trouver la réponse ;)
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Avatar du membre
jl56
Niveau 7
Niveau 7
Messages : 384
Enregistré le : mer. 24 oct. 2007 22:42
Localisation : 56000
Status : Hors ligne

Re: Boucles conditions jusqu'à avec une limite de temps

#7

Message par jl56 »

@TommyDDR

Je m'en doutais bien mais je suis en vacances et j'avais un peu de temps pour produire cet exemple et rendre, un peu, l'aide que m'ont apporté les membres de ce forum. Ça reste complémentaire aux informations de Thiérry.

@Misa10 prenez en compte, SVP, les 2 messages et regardez les explications dans l'aide.

@Thierry, si c'est une erreur de ma part merci de m'en informer.

Bonne soirée

A+

JL56
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11638
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: Boucles conditions jusqu'à avec une limite de temps

#8

Message par Tlem »

Bonsoir.
J'avais trouvé la méthode de tommy très appropriée et éducative dans ce sujet.
J'ai voulu reproduire, mais vous avez cassé mon effet...
Je ne sais pas si j'arriverai a m'en remettre. :lol:
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Répondre