[..] Interdire des caractères dans un Input Box
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
[..] Interdire des caractères dans un Input Box
Bonsoir
J'aimerais savoir s'il y avait une astuce permettant avec un InputBox classique d'interdire certains caractères ou du moins signaler à l'utilisateur qu'il a utilisé un caractère interdit pour qu'il puisse retaper. Il y en a bien une qui est du bricolage en mettant un hotkeyset de la touche pour la rendre inutilisable mais bon il doit y avoir mieux... Ou alors est-on obligé de passer par une GUI ?
En l'occurrence je voudrais interdire le slash "/".
J'aimerais savoir s'il y avait une astuce permettant avec un InputBox classique d'interdire certains caractères ou du moins signaler à l'utilisateur qu'il a utilisé un caractère interdit pour qu'il puisse retaper. Il y en a bien une qui est du bricolage en mettant un hotkeyset de la touche pour la rendre inutilisable mais bon il doit y avoir mieux... Ou alors est-on obligé de passer par une GUI ?
En l'occurrence je voudrais interdire le slash "/".
Modifié en dernier par Dixit le jeu. 31 mars 2011 11:30, modifié 4 fois.
Re: [..] Interdire des caractères dans un Input Box
Bonsoir
Mais c'est une vérification après coup ... pour vérifier au fur et à mesure de la saisie oui je pense qu'il faut passer par une GUI ou hotkeyset...
Code : Tout sélectionner
$toto = InputBox('toto', 'toto')
$res = StringInStr($toto, '/')
If $res = 0 Then
MsgBox(0, 'Alors ?', 'pas de / dans la saisie')
Else
MsgBox(0, 'Alors ?', 'Présence du caractère interdit')
EndIf- Tlem
- Site Admin

- Messages : 11824
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Interdire des caractères dans un Input Box
Le plus simple, sera de surveiller ce qui ce passe dans cette InputBox et de vérifier au fur et à mesure que le caractère entré ne soit pas celui/ceux interdits.
Vous trouverez un exemple ici : http://www.autoitscript.fr/forum/viewto ... 950#p37950
Vous trouverez un exemple ici : http://www.autoitscript.fr/forum/viewto ... 950#p37950
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é".
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é".
Re: [R] Interdire des caractères dans un Input Box
J'ai un autre problème maintenant en ce qui concerne la virgule donc je rouvre le sujet. Le programme marche très bien en ce qui concerne les caractère alphanumériques, ainsi que le slash et l'antislash, mais avec la virgule il semble y avoir un problème...
En effet, rentrez juste une virgule dans l'Input et il dira qu'il y en à une. Par contre rentrez par exemple " 7,5 " et il dira qu'il n'y a pas de virgule... Ou est le problème SVP ?
Code : Tout sélectionner
$rep=InputBox("Ecrivez","")
$result = StringInStr($rep, ',')
If $result = 1 Then
MsgBox(0,"NON","Une virgule a été mise")
Else
MsgBox(0,"OUI","Pas de virgules")
Endif- sksbir
- Niveau 7

- Messages : 384
- Enregistré le : lun. 26 oct. 2009 17:57
- Localisation : Lyon
- Status : Hors ligne
Re: [..] Interdire des caractères dans un Input Box
Bonjour
Piste probable : 7,5, c'est un chiffre. Essaye $result = StringInStr(string($rep), ',')
Piste probable : 7,5, c'est un chiffre. Essaye $result = StringInStr(string($rep), ',')
Re: [..] Interdire des caractères dans un Input Box
Non il ne trouve toujours pas de virgules avec cette méthode.
- sksbir
- Niveau 7

- Messages : 384
- Enregistré le : lun. 26 oct. 2009 17:57
- Localisation : Lyon
- Status : Hors ligne
Re: [..] Interdire des caractères dans un Input Box
mm, c'est plus simple que ça...
stringinstr ne renvoie pas 1 ou 0, mais la position de la virgule. Regarde plutôt:
A revoir : $result=1 , à remplacer par "if $result" tout simplement...
stringinstr ne renvoie pas 1 ou 0, mais la position de la virgule. Regarde plutôt:
Code : Tout sélectionner
$rep=InputBox("Ecrivez","")
$result = StringInStr($rep, ',')
If $result = 1 Then
MsgBox(0,"NON","Une virgule a été mise:" & $result)
Else
MsgBox(0,"OUI","Pas de virgules:" & $result)
EndifRe: [..] Interdire des caractères dans un Input Box
Ah d'accord merci ^^
- Tlem
- Site Admin

- Messages : 11824
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Interdire des caractères dans un Input Box
Pourtant, il m'avais semblé que le lien donné dans mon message précédent, était relativement clair ...
Vous constaterez que par rapport au message d'origine, la différence est minime. 
Mais sans doute qu'avec un code tout fait, cela sera plus parlant ...Tlem a écrit :Vous trouverez un exemple ici : http://www.autoitscript.fr/forum/viewto ... 950#p37950
► Afficher le texte
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é".
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é".
Re: [R] Interdire des caractères dans un Input Box
En fait je ne l'avais malheureusement pas regardé car le fait d'avertir simplement l'utilisateur me suffisait ^^ Mais oui je comprends :p Je trouve juste étonnant qu'on soit obligé de donner manuellement les caractères interdits. Enfin qu'il n'y ai pas une option genre ",1"> Que les lettres, ",2" > Que les nombres, etc. M'enfin c'est pas la mort non plus... Problème résolu merci!
- zeshrek
- Niveau 10

- Messages : 984
- Enregistré le : mer. 17 nov. 2010 09:31
- Localisation : Sur ma chaise
- Status : Hors ligne
Re: [..] Interdire des caractères dans un Input Box
Alors si, il est possible de lui dire 'que des lettres ou que des chiffres, ou toute combinaison de xchiffres/lettres/signes.
Pour cela il faut simplement s'ammuser avec les expressions régulières pour tester la validité de ce qui est saisi. Tu as par exemple eu pas plus tard que ce matin un superbe exemple de la part de ZDS pour les plages d'adresses IP...
Pour cela il faut simplement s'ammuser avec les expressions régulières pour tester la validité de ce qui est saisi. Tu as par exemple eu pas plus tard que ce matin un superbe exemple de la part de ZDS pour les plages d'adresses IP...
Si vis pacem para bellum
Re: [..] Interdire des caractères dans un Input Box
J'ai pas lu tout mais je propose aussi cela (il est visible a l'utilisateur que les "/" ne seront pas acceptés)
Code : Tout sélectionner
Global $1, $2
AdlibRegister ("lol", 200)
GUICreate ("")
$input = GUICtrlCreateInput ("", 0, 0, 200, 50)
GUISetState ()
sleep (10000)
Func lol()
$1 = GUICtrlRead ($input)
$2 = StringReplace ($1, "/", "")
GUICtrlSetData ($input, $2)
EndFunc- ZDS
- 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: [..] Interdire des caractères dans un Input Box
Argh, une routine qui veux travailler indirectement sur de l'interne en passant par l'interface externe !!!
C'est comme si tu allais à poil de ta chambre à la salle de bain en passant par le jardin ! Désolé Legend, mais un truc pareil c'est à proscrire, et à bannir ou brûler en dansant autour pour empêcher de tels mauvaises manies de revenir d'outre-tombe ^^.
Selon moi, la seule véritable façon propre de faire est par GUIRegisterMsg (proposée par Tlem), elle permet surtout une utilisation en live un peu comme un "notify observer" Java. Le reste, même par regexp, ne teste la validité qu'à posteriori (et je suis pour le "mieux vaut prévenir que guérir").
Mais bon, rien n'empêche de mettre une regexp dans le test effectué dans le bloc "Case $EN_CHANGE"
Selon moi, la seule véritable façon propre de faire est par GUIRegisterMsg (proposée par Tlem), elle permet surtout une utilisation en live un peu comme un "notify observer" Java. Le reste, même par regexp, ne teste la validité qu'à posteriori (et je suis pour le "mieux vaut prévenir que guérir").
Mais bon, rien n'empêche de mettre une regexp dans le test effectué dans le bloc "Case $EN_CHANGE"
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 !
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
- Tlem
- Site Admin

- Messages : 11824
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Interdire des caractères dans un Input Box
@Dixit
Le fait d'interdire que les lettres, les chiffres, les caractères spéciaux, ou un mélange des trois, peut ce faire d'une autre manière qu'une simple RegExp dont la maitrise est aléatoire et qui n'est pas forcément la solution la plus compréhensible lors de la relecture ou modification du code ultérieurement.
Pour cela, créez trois variables (ou plus selon votre convenance) contenant chacune le groupe de caractère que vous souhaitez interdire.
Voici par exemple pour les chiffres et pour les lettres (vous pouvez rajouter aussi les lettres spéciales tel que le â, le à, etc ... ou créer un groupe spécifique) :Ensuite, créez votre algorithme de sélection des groupes.
Par exemple :
Le fait d'interdire que les lettres, les chiffres, les caractères spéciaux, ou un mélange des trois, peut ce faire d'une autre manière qu'une simple RegExp dont la maitrise est aléatoire et qui n'est pas forcément la solution la plus compréhensible lors de la relecture ou modification du code ultérieurement.
Pour cela, créez trois variables (ou plus selon votre convenance) contenant chacune le groupe de caractère que vous souhaitez interdire.
Voici par exemple pour les chiffres et pour les lettres (vous pouvez rajouter aussi les lettres spéciales tel que le â, le à, etc ... ou créer un groupe spécifique) :
► Afficher le texte
Par exemple :
- 1 = que les chiffres
2 = que les lettres
3 = chiffres + lettres
4 = que les caractères spéciaux
5 = chiffres + caractères spéciaux
6 = lettres + caractères spéciaux
7 = chiffres + lettres + caractères spéciaux
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é".
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é".


