[R] Question de débutant

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
smirold
Niveau 2
Niveau 2
Messages : 16
Enregistré le : ven. 21 oct. 2011 08:54
Localisation : 94420 Le Plessis Trevise
Status : Hors ligne

[R] Question de débutant

#1

Message par smirold »

Bonjour,

Je cherche une commande qui puisse me faire revenir à un endroit précis dans le script ou bien une commande qui puisse interrompre une action par exemple :

Si j'appuie sur un bouton et qu’un champs n'est pas référencé alors message d'erreur, interruption de l'action, retour dans la boucle wile

Code : Tout sélectionner

Func _save_user_pass()

#Region ### START Koda GUI section ### Form=D:\Outils\Prog\Autoit\interfaces\win_login_pass.kxf
Global $win_login_pass = GUICreate("Paramètres de Connexion", 277, 164, 192, 124)
GUISetIcon("D:\Outils\Prog\Autoit\ico\keys.ico", -1)
Global $lab_Login = GUICtrlCreateLabel("Login :", 24, 40, 43, 20)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
Global $lab_pass = GUICtrlCreateLabel("Mot de Passe :", 24, 72, 75, 17)
Global $txt_login = GUICtrlCreateInput("", 104, 40, 121, 21)
Global $txt_pass = GUICtrlCreateInput("", 104, 72, 121, 21)
Global $bt_ok = GUICtrlCreateButton("OK", 56, 112, 75, 25)
Global $bt_cancel = GUICtrlCreateButton("Annuler", 152, 112, 75, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
    
  $login=GUICtrlRead($txt_login)
  $pass=GUICtrlRead($txt_pass)
  $nMsg = GUIGetMsg()
  
 Switch $nMsg
     
  Case $GUI_EVENT_CLOSE
    Exit
   
  Case $bt_ok
    If $login="" Or $pass="" Then
        MsgBox (0+16,"Erreur","Erreur vous devez indiquez un Login et un mot de passe !")
        [color=#008000];ICI JE VOUDRAI UN COMMANDE QUI ME FASSE REVENIR DANS LA BOUCLE WILE 
        ;(ps: si possible, je veux éviter d'utiliser un Else, car bcp d'autres conditions à venir !)[/color]
    EndIf
    [color=#008000];SUITE DU SCRIPTE A VENIR !!! (CONDITION: $login<>"" Or $pass<>"")[/color]

  Case $bt_cancel
    Exit
    
 EndSwitch


WEnd

EndFunc
Modifié en dernier par smirold le jeu. 27 oct. 2011 21:34, modifié 2 fois.
Avatar du membre
cutprod
Niveau 6
Niveau 6
Messages : 273
Enregistré le : jeu. 30 sept. 2010 17:25
Localisation : Sud Ouest
Status : Hors ligne

Re: [..]Question de débutant

#2

Message par cutprod »

Bonjour,
:shock: tu es déjà dans la boucle ! et quand l'utilisateur appuiera sur le bouton ok de la msgbox il y restera! (dans la boucle).
Cut, srcipteur du dimanche...désolé !-)
Avatar du membre
smirold
Niveau 2
Niveau 2
Messages : 16
Enregistré le : ven. 21 oct. 2011 08:54
Localisation : 94420 Le Plessis Trevise
Status : Hors ligne

Re: [..]Question de débutant

#3

Message par smirold »

Je me suis mal expliqué :oops:

Après la condition d'autres commandes vont être exécutées !

Code : Tout sélectionner

  Case $bt_ok
    If $login="" Or $pass="" Then
        MsgBox (0+16,"Erreur","Erreur vous devez indiquer un Login et un mot de passe !")
        [color=#008000];ICI JE VOUDRAI UN COMMANDE QUI ME FASSE REVENIR DANS LA BOUCLE WILE
        ;(ps: si possible, je veux éviter d'utiliser un Else, car bcp d'autres conditions à venir !)[/color]
    EndIf
    [color=#FF0000];SUITE DU SCRIPTE A VENIR !!! (CONDITION: $login<>"" Or $pass<>"")[/color]
   
Avatar du membre
cutprod
Niveau 6
Niveau 6
Messages : 273
Enregistré le : jeu. 30 sept. 2010 17:25
Localisation : Sud Ouest
Status : Hors ligne

Re: [..]Question de débutant

#4

Message par cutprod »

Qu'est ce qui t'empêche de mettre tes conditions et les actions qui en résultent, à la suite de celle-çi ?
Cut, srcipteur du dimanche...désolé !-)
Avatar du membre
smirold
Niveau 2
Niveau 2
Messages : 16
Enregistré le : ven. 21 oct. 2011 08:54
Localisation : 94420 Le Plessis Trevise
Status : Hors ligne

Re: [..]Question de débutant

#5

Message par smirold »

Sinon bien sur y a d'autres soluces ! (remettre une condition)

mais bon ! Je voulais juste savoir s'il existait une commande pour revenir à un endroit précis dans un script du genre "goto" ou une commande qui intterromp la case en cours :!:

J'aime bien me torturé l'esprit!!! :mrgreen:

Bon on va dire que c'est résolu ! :wink:
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [R]Question de débutant

#6

Message par sylvanie »

bonsoir pour info
pas de goto
mais pour revenir en début d'un while : continueloop
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Avatar du membre
smirold
Niveau 2
Niveau 2
Messages : 16
Enregistré le : ven. 21 oct. 2011 08:54
Localisation : 94420 Le Plessis Trevise
Status : Hors ligne

Re: [R] Question de débutant

#7

Message par smirold »

merci Sylvanie ! C'est tout con ! mais c'est exactement la commande que je cherchais ! :D
Avatar du membre
ZDS
Membre émérite
Membre émérite
Messages : 554
Enregistré le : jeu. 10 juin 2010 10:35
Localisation : 22300 Cul-d'chouette Langue-de-vache
Status : Hors ligne

Re: [R] Question de débutant

#8

Message par ZDS »

Bonjour,

Ayant des réticences à utiliser des ExitLoop et des ContinueLoop (car rien de moins selon moi que des solutions à la Goto que tout programmeur se doit d'éviter ^^), voici une alternative qui permet plus de flexibilité, exemple si une condition permet de demander la suite de l'exécution :
► Afficher le textealternative au ContinueLoop
A bientôt !

PS: Je vois aussi que dans le coeur de ta boucle tu lis des variables dont tu n'as pas besoin tant qu'un événement n'est pas lancé. Tu effectues ces opérations à la chaine alors qu'elles n'ont aucun interet :
► Afficher le texteAvant
► Afficher le texteAprès
ZDS : Chef de projet du nAiO (logiciel AutoIt gratuit sous licence CC 4.0 BY-NC-SA)
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
Répondre