[R] Revenir a la boucle précédente

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
Yoyo86220
Niveau 6
Niveau 6
Messages : 238
Enregistré le : mer. 12 mars 2008 21:47
Status : Hors ligne

[R] Revenir a la boucle précédente

#1

Message par Yoyo86220 »

bonjour a tous!

voici mon probleme j'ai 2 boucle "while 1" et "While 2"
je veu que si il ya une erreur a la fin de ma boucle while 2 que sa revienne au début de ma "while 1" merci de votre aide...

Code : Tout sélectionner

If @error=1 Then return While 1
ceci ne marche pas...
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Revenir a la boucle précédente

#2

Message par Tlem »

Cela n'est pas possible en l'état.

Si vous intégrez une boucle While (2) dans une boucle While (1), la boucle 1 ne pourra continuer qui si la boucle 2 est terminée, ou si vous en êtes sorti de la boucle par ExitLoop.

Pour ce que vous voulez faire, il vous faudra passer par des fonctions (Regarder dans le tuto pour ca).
Le mieux serait de créer la fonction 1 avec la boucle 1, puis une fonction 2 avec la boucle 2.
Après il vous suffit de gérer les conditions et les exceptions pour lancer la fonction 1 ou 2, ou en sortir.
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
Yoyo86220
Niveau 6
Niveau 6
Messages : 238
Enregistré le : mer. 12 mars 2008 21:47
Status : Hors ligne

Re: [..] Revenir a la boucle précédente

#3

Message par Yoyo86220 »

ok, je regarde... mais au cas ou on c'est pas compri... ma boucle 2 n'est pas dans ma boucle 1 mais apres mintenant...
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Revenir a la boucle précédente

#4

Message par Tlem »

Ca ne change rien.
Il n'y à pas de commande Goto comme pour le DOS, donc la solution c'est les Fonctions.
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
Yoyo86220
Niveau 6
Niveau 6
Messages : 238
Enregistré le : mer. 12 mars 2008 21:47
Status : Hors ligne

Re: [..] Revenir a la boucle précédente

#5

Message par Yoyo86220 »

d'accor merci de votre aide... je peux pas fair un truc du genre :

metre ça au début de ma première boucle:

Code : Tout sélectionner

$sortie = 1
et a la fin de ma deuxième:

Code : Tout sélectionner

If @error = 1 Then Return 1
ou quelque chose dans ce steal...
si se n'est pas dutout ça, pouvez vous me donner le tuto sur les fonctions...
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Revenir a la boucle précédente

#6

Message par Tlem »

La commande Return sert justement aux fonctions.

On place cette commande en sortie de fonction, pour retourner une valeur de contrôle.
Ce qui fait que vous pouvez faire quelque chose comme ceci :

Code : Tout sélectionner

$Res = MaFonction1()
If $Res = 1 Then Msgbox(0,"Retour","La fonction 1 à retourné le code 1")

$Res = MaFonction2()
If $Res = 0 Then Msgbox(0,"Retour","La fonction 2 à retourné le code 0")

Func MaFonction1()
     Return 1
EndFunc

Func MaFonction2()
     Return 0
EndFunc
On peut aussi simplifié ce genre de code par l'envois d'une valeur qui sera traitée :

Code : Tout sélectionner

$Res = MaFonction(1)
Msgbox(0,"Retour","La fonction à retourné le code " & $Res)

$Res = MaFonction(0)
Msgbox(0,"Retour","La fonction à retourné le code " & $Res)

Func MaFonction($Val)
     Return $Val
EndFunc
 
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
Yoyo86220
Niveau 6
Niveau 6
Messages : 238
Enregistré le : mer. 12 mars 2008 21:47
Status : Hors ligne

Re: [..] Revenir a la boucle précédente

#7

Message par Yoyo86220 »

voici mon sript:
► Afficher le texte

donc voila il m'indique des erreurs que faire ??....
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Revenir a la boucle précédente

#8

Message par Tlem »

Yoyo86220 a écrit :donc voila il m'indique des erreurs que faire ??....
Lire l'aide et le tutoriel qui parle de la fonction, et corriger le code pour que ça fonctionne. :P

Je vous ai expliqué comment faire une fonction ... Mettez en pratique.
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
Yoyo86220
Niveau 6
Niveau 6
Messages : 238
Enregistré le : mer. 12 mars 2008 21:47
Status : Hors ligne

Re: [..] Revenir a la boucle précédente

#9

Message par Yoyo86220 »

lol oki merci (je n'ai que 13ans) je vais chercher quand meme
Avatar du membre
Yoyo86220
Niveau 6
Niveau 6
Messages : 238
Enregistré le : mer. 12 mars 2008 21:47
Status : Hors ligne

Re: [..] Revenir a la boucle précédente

#10

Message par Yoyo86220 »

Snifff durdur je ne comprends pas comment marche une fonction...
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Revenir a la boucle précédente

#11

Message par Tlem »

Les exemples de mon post http://www.autoitscript.fr/forum/viewto ... 3943#p3943 ne peuvent être plus simple.

Au lieu de poster à tout vent : Lire l'aide et les posts du forum/Essayer/re-lire l'aide et les posts/Ré-essayer ...
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
Yoyo86220
Niveau 6
Niveau 6
Messages : 238
Enregistré le : mer. 12 mars 2008 21:47
Status : Hors ligne

Re: [..] Revenir a la boucle précédente

#12

Message par Yoyo86220 »

j'explique doucement mais surment... :D


comment fait-on pour ne pas avoir de Msgbox... je veux garder la fonction mais sans msgbox... merci a tous apres ceci j'aurais fini...

Code : Tout sélectionner

   $Res = MaFonction1()
  If $Res = 1 then ....
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

Re: [..] Revenir a la boucle précédente

#13

Message par ani »

Faut juste retirer la ligne concerné msgbox(..........)
ou tu peux indiquer le caractère point virgule au début de la ligne comme ci-dessous

Code : Tout sélectionner

;msgbox(0,"titre","texte")
Avatar du membre
Yoyo86220
Niveau 6
Niveau 6
Messages : 238
Enregistré le : mer. 12 mars 2008 21:47
Status : Hors ligne

Re: [..] Revenir a la boucle précédente

#14

Message par Yoyo86220 »

Donc j'ai tjr un probleme :

► Afficher le texte
la fonction ne revient pas au début... aide plz
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Revenir a la boucle précédente

#15

Message par Tlem »

Vous n'avez visiblement pas compris la philosophie d'une fonction.

Une fonction est un bout de code déclaré fonction qui est appelé n'importe ou dans votre code.

J'avais mis le code Return 1 pour l'exemple, mais le but dans votre cas est d'intégrer vos boucle While dans des fonctions différentes.

Sinon, une autre solution consisterait à utiliser les commandes Select/EndSelect dans ce genre :

Code : Tout sélectionner

$Res = 0

While 1  ; Boucle Infinie.

    Select  ; Selection de la condition.
        Case $Res = 0 ; Condition si $Res = 0
            MsgBox(0, "", "Res = 0") ; Au lieu de ceci mettez votre première boucle
            $Res = 1 ; Ici je met $Res = 1 pour pouvoir aller dans l'autre case.
        
        Case $Res = 1 ; Condition si $Res = 1
            MsgBox(0, "", "Res = 1") ; Au lieu de ceci mettez votre deuxième boucle
            $Res = 3 ; Ici je met $Res = 3 pour pouvoir sortir.
        
        ; Cette condition n'est là que pour traiter les cas autres que ceux traités
        ; précédement (Au cas ou il y aurais un cas supplémentaire).
        Case Else ; Signifie autre cas (Que $Res=0 ou $Res=1)
            $Res = 3 ; je met $Res = 3 pour pouvoir sortir.
    EndSelect ; Fin de selection de la condition.

If $Res = 3 Then ExitLoop ; Si $Res=3, je sort de la boucle While, sinon on continue.
WEnd ; Fin de la boucle.
 
Le code si-dessus est suffisement commenté pour votre compréhension, merci de l'adapter à vos besoins.
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