[R] Conditions dans un inputbox

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Utilisateur 4174 supprimé
Status : Hors ligne

[R] Conditions dans un inputbox

#1

Message par Utilisateur 4174 supprimé »

Bonjour,

Je souhaiterais ajouter la condition suivante dans une inputbox :
Ma donnée entrée devra commencer par un "S" ou un "P" suivie de 3 numéros sinon je refuse de continuer mon script.

Merci !
Modifié en dernier par Utilisateur 4174 supprimé le ven. 27 mars 2015 20:43, modifié 1 fois.
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2511
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Conditions dans un inputbox

#2

Message par jguinch »

Il faut que tu recherche les fonctions appropriées qui te permettront de décortiquer la chaîne de caractères.
Dans la doc, il y a plein de fonctions de traitement de chaînes (String Management)

En gros, il faut :
- tester la longueur de la chaîne (4 caractères)
- récupérer le premier caractère (caractère de gauche)
- tester si ce caractère est un S ou un P
- récupérer les 3 derniers caractères (caractères de droite)
- tester si ces 3 caractères forment un nombre entier

Edit : bien sûr, le plus rapide est d'utiliser une expression régulière du genre "^[SP]\d{3}$", mais là c'est peut-être un peu plus compliqué à appréhender...
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Utilisateur 4174 supprimé
Status : Hors ligne

Re: [..] Conditions dans un inputbox

#3

Message par Utilisateur 4174 supprimé »

Les expressions régulières c'est bien la seule chose que je comprends. La difficulté pour moi c'est de l'utiliser dans Autoit et surtout les boucles...

"^[SP]1{1}\d{2}$" --> S100 à S199 et P100 à P199

Je suis perdu avec çà...
► Afficher le texte
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 inputbox

#4

Message par orax »

Par défaut (flag=0) StringRegExp retourne 1 ou 0. 1, l'expression est vérifiée et 0, elle ne l'est pas. Donc si la valeur retournée n'est pas égale à 0, c'est que l'expression a été trouvée dans la chaîne.
Dans ce @error serait différent de 0 que si l'expression régulière est mauvaise (erreur de syntaxe).

Code : Tout sélectionner

#include <StringConstants.au3>
While 1
    $computer_name = InputBox("Modifier le nom de l'ordinateur", "Entrer le nom de l'ordinateur et cliquer sur OK", '')
    If StringRegExp($computer_name, "^[SP]1{1}\d{2}$") Then ExitLoop
    MsgBox(0, "Modifier le nom de l'ordinateur", "Veuillez respecter la convention de nommage.")
WEnd
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Utilisateur 4174 supprimé
Status : Hors ligne

Re: [..] Conditions dans un inputbox  

#5

Message par Utilisateur 4174 supprimé »

Merci pour votre aide, après plusieurs jours à chercher...

Voici ma version finale :
► Afficher le texte
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2511
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [R] Conditions dans un inputbox

#6

Message par jguinch »

Juste une remarque sur la regex : le {1} n'est pas nécessaire.
^[SP]1\d{2}$ est suffisant
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Répondre