[R] Conditions dans un WHILE

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
Yle
Niveau 5
Niveau 5
Messages : 171
Enregistré le : mar. 21 avr. 2009 17:22
Localisation : La NORMANDIE -76
Status : Hors ligne

[R] Conditions dans un WHILE

#1

Message par Yle »

Bonsoir à tous,

J'ai un souci avec un test que j'aimerai faire dans un While
Tout d'abord mes qq lignes de code
► Afficher le texte
Puis-je avec l'aide d'un STRINGREGEXP dans mon while tester que l'on m'a bien rentré les lettres désirées : NSE et O ?
Sinon je vais être obligé de tester x combinaisons sur 4 caractères : NOSE, NSEO, NOES, NEOS etc...
Puis sur 3 caractères etc...

Si qq a une idée, d'avance merci.
Modifié en dernier par Yle le lun. 17 août 2015 09:05, 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: [..] Conditions dans un WHILE

#2

Message par mikell »

Il faut vérifier qu'on a bien rentré les lettres désirées mais aussi qu'elles ne sont pas en double NNSE par exemple
Je te propose ça

Code : Tout sélectionner

StringRegExp($Choix, '([NSOE](?!.*\1)){' & StringLen($Choix) & '}')
Le regex vérifie que des lettres NSEO ne sont pas en double et que leur nombre correspond à la longueur de la string
Rajouter (?i) au début du pattern si tu le veux case insensitif
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Conditions dans un WHILE

#3

Message par jguinch »

@mikell : pas mal celle là :D J'aime bien l'utilisation du \1 à l'intérieur du groupe lui-même :wink:
J'ajouterais juste ^ et $ et un nombre d’occurrences minimum (entre les accolades) :

Code : Tout sélectionner

StringRegExp($Choix, '^([NSOE](?!.*\1)){1,' & StringLen($Choix) & '}$')
 
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Conditions dans un WHILE

#4

Message par mikell »

Les ancres ne sont pas utiles vu qu'aucun autre caractère que ces 4-là n'est autorisé :wink:
Sinon pour les quantités min=1 et max=4 ya qu'à construire l'inputbox comme ça

Code : Tout sélectionner

Local $sValue = InputBox("Testing", "Entrez de 1 à 4 charactères", "", " M4")
MsgBox(0, "", $sValue)
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Conditions dans un WHILE

#5

Message par jchd »

Euh, quelqu'un a essayé de saisir EE ou NNNN par exemple ?
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
Yle
Niveau 5
Niveau 5
Messages : 171
Enregistré le : mar. 21 avr. 2009 17:22
Localisation : La NORMANDIE -76
Status : Hors ligne

Re: [..] Conditions dans un WHILE

#6

Message par Yle »

J'ai modifié ma ligne comme ceci :

While (StringLen($Choix) < 1 Or StringLen($Choix) > 4 Or StringRegExp($Choix, '([NSOE](?!.*\1)){' & StringLen($Choix) & '}') = 0)

Donc si j'entre :
N seul, résultat : N ok
NN : il accepte résultat : NN (ca ne me gêne pas)
NNN : il n'accepte pas -Tant mieux
NNNN : il n'accepte pas -Tant mieux

A ou AA ou AAA ou AAAA : il n'accepte pas -Normal
1 ou 2 ou 3 ou 4 lettres de NOSE : il accepte - c'est ok

Une question (subsidiaire) : Pourquoi accepte-il NN ?
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Conditions dans un WHILE

#7

Message par mikell »

Parce que comme jc l'a relevé j'ai fait une connerie de parenthèses :mrgreen:

Code : Tout sélectionner

Local $Choix
While StringLen($Choix) < 1 or not StringRegExp($Choix, '(([NSOE])(?!.*\2)){' & StringLen($Choix) & '}' )
   $Choix = InputBox("Testing", "Entrez de 1 à 4 charactères", "", " M4")
   If @error Then Exit
Wend
msgbox(0,"", "ok")
et jguinch l'a même pô vu, roooh :shock:
...Il a dû avoir le même genre de soirée que moi hier soir :P
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Conditions dans un WHILE

#8

Message par orax »

Pas sûr que les StringLen soient bien nécessaires par contre.

Code : Tout sélectionner

While not StringRegExp($Choix, '^(?:([NSEO])(?!.*\1)){1,4}$')
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Conditions dans un WHILE

#9

Message par jguinch »

@mikell : j'avais vu qu'il y avait un truc par rapport au \1 qui était utiliser dans le premier groupe capturant, mais c'est vrai que j'ai pas testé plus que ça.
Perso, j'aurais fait exactement ce qu'à fait Orax :)
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Conditions dans un WHILE

#10

Message par mikell »

...et qui ne fonctionne pas avec par exemple NOEE <= sottise... je m'en vais aller cuver un brin (demain est un autre jour)
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Conditions dans un WHILE

#11

Message par jguinch »

► Afficher le texte
Euh, ça marche bien là, non ? :?:
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Conditions dans un WHILE

#12

Message par jchd »

Il y en a même un poil de trop et d'un autre côté While n'est pas ici la construction la plus naturelle :

Code : Tout sélectionner

Local $Choix
Do
   $Choix = StringUpper(InputBox("Testing", "Entrez de 1 à 4 charactères", "", " M4"))
   If @error Then Exit
Until StringRegExp($Choix, '^(?:([NSEO])(?!.*\1))+$')
MsgBox(0,"",$Choix)
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Conditions dans un WHILE

#13

Message par jguinch »

Ah oui, le quantificateur fait doublon avec le M4 de l'inputbox (d'ailleurs, j'avais jamais fait gaffe à ce paramètre, c'est sympa).
Dans la doc de l'inputbox, je ne comprends pas trop la remarque If your script is going to use an inputbox you must include the pragma directive "#pragma compile(inputboxres, true)"
Ca laisse supposer qu'il fait forcément utiliser cette directive si on utilise un InpuBox ?
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Conditions dans un WHILE

#14

Message par jchd »

Je suis dans le même cas, je reste perplexe.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
Yle
Niveau 5
Niveau 5
Messages : 171
Enregistré le : mar. 21 avr. 2009 17:22
Localisation : La NORMANDIE -76
Status : Hors ligne

Re: [..] Conditions dans un WHILE

#15

Message par Yle »

Bonjour à tous,

Cette solution me semble parfaite. Je passe en résolu.

Merci aux modérateurs d'avoir œuvré sur ce problème malgré un weekend difficile pour certains.
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [R] Conditions dans un WHILE

#16

Message par jchd »

J'ai l'impression que c'est plutôt la semaine qui risque de poser problème. Très facile de se murger à donf, mais c'est à la réouverture des yeux que ça coince grave généralement.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [R] Conditions dans un WHILE

#17

Message par mikell »

Tant que les conséquences immédiates se résument à un problème style 'équipe de France de fotbal' (on a encore les bonnes idées de départ mais on merdoie la finition) ça veut dire que les connexions synaptiques demeurent fonctionnelles - bien qu'erratiques - et en général 48h après c'est OK :mrgreen:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [R] Conditions dans un WHILE

#18

Message par jchd »

Tu me rassures ! Note que ça aurait été original : on voit partout des chats dans des bouteilles, mais pas pleines d'eau de vie.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [R] Conditions dans un WHILE

#19

Message par mikell »

Image
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [R] Conditions dans un WHILE

#20

Message par jchd »

Même tenir un verre peut s'avérer déli...cat
Image
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Répondre