[R] Je n'arrive pas à quitter la boucle

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
jpbon
Niveau 2
Niveau 2
Messages : 23
Enregistré le : lun. 06 févr. 2012 15:26
Status : Hors ligne

[R] Je n'arrive pas à quitter la boucle

#1

Message par jpbon »

Bonjour à tous,
C'est un débutant en programmation qui s'adresse à vous.
Je pense que ma question ne doit pas être compliqué, mais j'ai beau chercher par moi même, je ne trouve pas la solution. (Je tourne en rond)
Je souhaite réaliser la chose suivante :
Ouverture d'une boite de dialogue avec la demande de saisie d'un mot de passe, avec un bouton OK et un bouton Annuler.
Si le mot de passe est bon après un clic sur ok, un nouveau message s'affiche pour l'indiquer et on clic sur ok de ce nouveau message pour aller sur une page Web.
Si le mot de passe est incorrect, c'est un message d'erreur qui s'affiche et on clic sur un bouton recommencer pour revenir à la première fenêtre de saisie. (Idéalement après 5 essais on quitte le script).
Ce que j'ai écrit fonctionne en partie, mais la boucle semble se répéter à l'infinie.
Je ne sais pas non plus comment limiter les tentatives de saisies du mot de passe à 5 essais.
Si vous pouviez m'aider, ce serait super sympa.
Merci beaucoup.
Voici mon script :

Code : Tout sélectionner

While 1
    $valeur = InputBox("Saisir le mot de passe", "Attention au Majuscules & Minuscules ", "", " M11")
    If ($valeur) = "12345" Then
    MsgBox(32, "Bravo", "Mot de passe OK! ")
Else
    MsgBox(16, "Attention", "Mot de passe invalide.")
    EndIf
WEnd
    ShellExecuteWait("http://www.google.com")
    Sleep (20000)
Exit

 
Modifié en dernier par jpbon le mer. 29 févr. 2012 08:56, modifié 1 fois.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Je n'arrive pas à quitter la boucle

#2

Message par mikell »

Code : Tout sélectionner

Global $n = 0

While 1
$valeur = InputBox("Saisir le mot de passe", "Attention au Majuscules & Minuscules ", "", " M11")
If $valeur = "12345" Then
    MsgBox(32, "Bravo", "Mot de passe OK! ")
    ExitLoop
Else
    $n += 1
    MsgBox(16, "Attention", "Mot de passe invalide.")
EndIf
If $n = 5 Then 
    MsgBox(16, "Attention", "5 essais")
    Exit
EndIf
WEnd
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
jpbon
Niveau 2
Niveau 2
Messages : 23
Enregistré le : lun. 06 févr. 2012 15:26
Status : Hors ligne

Re: [..] Je n'arrive pas à quitter la boucle

#3

Message par jpbon »

Merci pour cette réponse rapide.

Je vais tester ça dès que possible (ce soir).
Excellente journée.

L'entre aide c'est vraiment génial.
Mille merci
Avatar du membre
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

Re: [..] Je n'arrive pas à quitter la boucle

#4

Message par blacksoul305 »

Je m'invite juste à titre de conseil.
[color=#FF8000]mikell[/color] a écrit :

Code : Tout sélectionner

Global $n = 0

While 1
$valeur = InputBox("Saisir le mot de passe", "Attention au Majuscules & Minuscules ", "", " M11")
If $valeur = "12345" Then
    MsgBox(32, "Bravo", "Mot de passe OK! ")
    ExitLoop
Else
    [color=#0000BF]$n += 1[/color]
    MsgBox(16, "Attention", "Mot de passe invalide.")
EndIf
If $n = 5 Then 
    MsgBox(16, "Attention", "5 essais")
    Exit
EndIf
WEnd
La technique utilisée ici est l'incrémentation. Ça consiste à chaque fois que la boucle se répète, rajouter un nombre souhaité à la variable.
Ici, la variable $n joue ce rôle.

Elle est d'abord égale à 0 pour dire qu'aucune tentative a été faite. Une première condition vérifie que votre mot de passe est mauvais:
SI votre mot de passe est correct ALORS etc...
SINON ou rajoute +1 à la variable $n.
FIN (de la condition)

Une dernière condition est placée pour voir vérifier si la variable $n = 5.

En espérant avoir éclairé ce code (si jamais vous n'avez pas compris).
Étudiant en 2ème année de Licence Informatique.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Je n'arrive pas à quitter la boucle

#5

Message par mikell »

Merci pour ces explications que je n'ai pas eu le temps d'écrire ce matin (ric-rac pour le boulot...) :wink:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
jpbon
Niveau 2
Niveau 2
Messages : 23
Enregistré le : lun. 06 févr. 2012 15:26
Status : Hors ligne

Re: [..] Je n'arrive pas à quitter la boucle

#6

Message par jpbon »

Je viens de tester, et ça fonctionne comme je le souhaite, mis à part un petit détail, lorsque l'on clic sur
CANCEL, le message "Mot de passe invalide" revient également 5 fois et le script s'arrête ensuite après 5 fois CANCEL.
Idéalement je préfèrerais obtenir le message suivant, par exemple : "Abandon de la procédure" et quitter le script dès le premier clic sur CANCEL.
Merci pour votre aide. Bonne fin de journée.

J'ai essayé le code ci-dessous, en ajoutant un "If" mais je ne maitrise pas la syntaxe pour la commande Cancel.
Que faut il écrire pour indiquer un clic sur Cancel ?

Code : Tout sélectionner

Global $n = 0

While 1
$valeur = InputBox("Saisir le mot de passe", "Attention au Majuscules & Minuscules ", "", " M11")
If $valeur = "12345" Then
    MsgBox(32, "Bravo", "Mot de passe OK! ")
    ExitLoop
Else
    $n += 1
    MsgBox(16, "Attention", "Mot de passe invalide.")
EndIf
If $n = 5 Then
    MsgBox(16, "Attention", "5 essais")
    Exit
EndIf
If
    Cancel
    MsgBox(16, "ATTENTION", "Abandon de la procédure")
             Exit
EndIf
WEnd

ShellExecuteWait("http://www.google.com")
    Sleep (20000)
Exit

 
Avatar du membre
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

Re: [..] Je n'arrive pas à quitter la boucle

#7

Message par blacksoul305 »

Là il te faut aller dans l'aide d'Autoit. Celle-ci dit:
Aide Autoit pour la commande InputBox() a écrit : @error 0 = The string returned is valid.
1 = The Cancel button was pushed.
2 = The Timeout time was reached.
3 = The InputBox failed to open. This is usually caused by bad arguments.
4 = The InputBox cannot be displayed on any monitor.
5 = Invalid parameters width without height or left without top.
En clair, selon l'erreur, l'input te renvoie une erreur qui selon la valeur, veut dire une erreur différente. Je te mes le bout de code.

Code : Tout sélectionner

Global $n = 0

While 1
$valeur = InputBox("Saisir le mot de passe", "Attention au Majuscules & Minuscules ", "", " M11")
If $valeur = "12345" Then
    MsgBox(32, "Bravo", "Mot de passe OK! ")
    ExitLoop
ElseIf @error = 1 Then
    MsgBox(64,"Exit","Vous avez choisi de quitter le programme.")
    Exit
Else
    $n += 1
    MsgBox(16, "Attention", "Mot de passe invalide.")
EndIf
If $n = 5 Then
    MsgBox(16, "Attention", "5 essais")
    Exit
EndIf
WEnd
Et voilà le travail !
Modifié en dernier par blacksoul305 le mar. 28 févr. 2012 16:31, modifié 1 fois.
Étudiant en 2ème année de Licence Informatique.
Avatar du membre
TopXm
Niveau 6
Niveau 6
Messages : 260
Enregistré le : mer. 25 mai 2011 16:37
Localisation : Usa
Status : Hors ligne

Re: [..] Je n'arrive pas à quitter la boucle

#8

Message par TopXm »

Salut :)

Vu que Mikell travaille :)

[EDIT]en plus de poster "une grosse bêtise" j'ai un temps de retard :)

J'édite ma boulette :)
Modifié en dernier par TopXm le mar. 28 févr. 2012 16:43, modifié 1 fois.
Avatar du membre
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

Re: [..] Je n'arrive pas à quitter la boucle

#9

Message par blacksoul305 »

Et ça s'est joué à pas longtemps. J'ai été le plus rapide !
Étudiant en 2ème année de Licence Informatique.
Avatar du membre
TopXm
Niveau 6
Niveau 6
Messages : 260
Enregistré le : mer. 25 mai 2011 16:37
Localisation : Usa
Status : Hors ligne

Re: [..] Je n'arrive pas à quitter la boucle

#10

Message par TopXm »

Yep :)

En plus c'était moins propre mon code :

Code : Tout sélectionner

    If $valeur = '' Then Exit    ;clic sur cancel on sort
;)
Avatar du membre
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

Re: [..] Je n'arrive pas à quitter la boucle

#11

Message par blacksoul305 »

J'vais pas te mentir, j'viens juste de comprendre le fonctionnement de cette commande haha !
Étudiant en 2ème année de Licence Informatique.
jpbon
Niveau 2
Niveau 2
Messages : 23
Enregistré le : lun. 06 févr. 2012 15:26
Status : Hors ligne

Re: [..] Je n'arrive pas à quitter la boucle

#12

Message par jpbon »

Bonjour à tous,
J'ai testé hier soir et ça fonctionne parfaitement comme je voulais.
En plus? grace à vos explications je comprends ce code et ça c'est plutôt bien pour la suite de mon utilisation d'AutoIt.
Un grand merci.
Je vous souhaite une excellente journée.
Répondre