[R] Tester la valeur de 4 GUICtrlCreateInput

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
TheJungleman
Niveau 1
Niveau 1
Messages : 7
Enregistré le : ven. 09 oct. 2009 21:37
Status : Hors ligne

[R] Tester la valeur de 4 GUICtrlCreateInput

#1

Message par TheJungleman »

Bonjour à tous,

Je cherche à créer une GUI dans le but d'automatiser l'installation d'imprimante en réseau. Au boulot nous avons 10-15 modèles d'imprimantes selon les clients.
La partie installation de l'imprimante est déjà codée. Il ne me reste plus qu'à créer une jolie GUI pour permettre au personne novice d'installer facilement l'imprimante (tout en sachant qu'elles connaissent l'adresse IP de l'imprimante)

Mon souci pour le moment se pose au moment de tester les valeurs insérées dans 4 GUICtrlCreateInput

Image

Je voudrais tester les valeurs pour être sûr qu'elles soient bien comprise entre 0 et 255. Cela çà fonctionne. Le problème se pose lorsque que je simule une IP du genre 257.257.257.257... Le focus revient après m'avoir afficher mes MSGBOX et la MSGBOX récapitulative.

Après avoir essayé toutes les conditions possibles if, while do select, je me retrouve coincer. En gros, çà tourne toujours en boucle sur le champs fautif (<0 ou >255).

J'ai parcouru de longues heures aujourd'hui le forum sans pour autant trouver la solution à mon problème. (J'avoue que lors de ma recherche, je n'arrive pas encore à définir correctement mes critères et que je m'emmêle un peu les pinceaux).

J'ai trouvé quelques exemples qui pourraient fonctionner (dont un qui vérifie directement lors de la saisie mais qui défini 255 directement or je préférais un message d'alerte type Windows).

Voici mon code :

Code : Tout sélectionner

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

#Region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("Form1", 202, 104, 192, 124)
Global $Input1 = GUICtrlCreateInput("", 26, 40, 33, 21,$ES_NUMBER)
Global $Input2 = GUICtrlCreateInput("", 66, 40, 33, 21,$ES_NUMBER)
Global $Input3 = GUICtrlCreateInput("", 106, 40, 33, 21,$ES_NUMBER)
Global $Input4 = GUICtrlCreateInput("", 146, 40, 33, 21,$ES_NUMBER)
Global $Button1 = GUICtrlCreateButton("Button1", 63, 72, 75, 25, $WS_GROUP)
Global $Label1 = GUICtrlCreateLabel("Insérer l'adresse IP", 44, 11, 113, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
    $nMsg = GUIGetMsg()
    If $nMsg = -3 then ExitLoop
    
        If $nMsg = $button1 Then
    GUISetState(@SW_HIDE)

    $CR1 = GUICtrlRead($Input1) ; chiffre inséré

    numero($CR1,$Input1) ; regarder si =>0 et <=255

    $CR2 = GUICtrlRead($Input2)
    numero($CR2,$Input2)

    $CR3 = GUICtrlRead($Input3)
    numero($CR3,$Input3)

    $CR4 = GUICtrlRead($Input4)
    numero($CR4,$Input4)

    $CR = ""& $CR1 &"."& $CR2 &"."& $CR3 &"."& $CR4
    MsgBox(0,"",$CR) ; MsgBox récapitulative
    EndIf
WEnd
Exit

Func numero($var,$var2)
        if $var >=0 AND $var <=255 Then
            Return $var
        Else
            Msgbox(0,"",$var&" n'est pas compris entre 0 et 255")
            GUISetState(@SW_SHOW)
            GUICtrlSetState($var2,$GUI_FOCUS)
        EndIf
EndFunc
Je ne recherche pas une solution toute faite mais plutôt des pistes soit de recherche soit de codage.

Merci à toutes les bonnes âmes qui voudront bien m'aider
Modifié en dernier par TheJungleman le mar. 05 oct. 2010 09:54, modifié 1 fois.
Le fait que le monde soit peuplé de crétins permet à chacun de nous de ne pas se faire remarquer
GaRydelaMer
Niveau 7
Niveau 7
Messages : 450
Enregistré le : mer. 18 mars 2009 22:12
Localisation : Montpellier
Status : Hors ligne

Re: [..] Tester la valeur de 4 GUICtrlCreateInput

#2

Message par GaRydelaMer »

Bonsoir

vite fait:

Code : Tout sélectionner

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Array.au3>

#region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("Form1", 202, 104, 192, 124)
Global $Input1 = GUICtrlCreateInput("", 26, 40, 33, 21, $ES_NUMBER)
Global $Input2 = GUICtrlCreateInput("", 66, 40, 33, 21, $ES_NUMBER)
Global $Input3 = GUICtrlCreateInput("", 106, 40, 33, 21, $ES_NUMBER)
Global $Input4 = GUICtrlCreateInput("", 146, 40, 33, 21, $ES_NUMBER)
Global $Button1 = GUICtrlCreateButton("Button1", 63, 72, 75, 25, $WS_GROUP)
GUICtrlCreateLabel("Insérer l'adresse IP", 44, 11, 113, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
GUISetState(@SW_SHOW)
#endregion ### END Koda GUI section ###
Global $IP[4]
While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case -3
            ExitLoop
        Case $Input1
            _Numero($Input1, $Input2, 0)
        Case $Input2
            _Numero($Input2, $Input3, 1)
        Case $Input3
            _Numero($Input3, $Input4, 2)
        Case $Input4
            _Numero($Input4, $Button1, 3)
        Case $Button1
            Local $sIP = _ArrayToString($IP, ".")
            If StringRegExp($sIP, "\d+\.\d+\.\d+\.\d+") Then
                MsgBox(0, "Adresse IP", $sIP)
                ExitLoop
            Else
                MsgBox(0, "Erreur dans la saisie", "Saisir une adresse IP")
                GUICtrlSetState($Input1, $GUI_FOCUS)
            EndIf
    EndSwitch
WEnd
Exit

Func _Numero($ctrl1, $ctrl2, $idx)
    Local $var = GUICtrlRead($ctrl1), $limit = 0
    If $ctrl1 =  $Input1 Then $limit = 1
    If $var >= $limit And $var <= 255 Then
        GUICtrlSetState($ctrl2, $GUI_FOCUS)
        $IP[$idx] = $var + 0
    Else
        MsgBox(0, "Erreur dans la saisie", "Saisir un nombre compris entre " & $limit & " et 255")
        GUICtrlSetState($ctrl1, $GUI_FOCUS)
    EndIf
EndFunc   ;==>_Numero
Avatar du membre
TheJungleman
Niveau 1
Niveau 1
Messages : 7
Enregistré le : ven. 09 oct. 2009 21:37
Status : Hors ligne

Re: [..] Tester la valeur de 4 GUICtrlCreateInput

#3

Message par TheJungleman »

Un très grand merci à toi.

Je pense donc que mon problème provenait tout simplement de la manière dont je traitais ma fonction.

Encore une fois merci

Sujet clos.
Le fait que le monde soit peuplé de crétins permet à chacun de nous de ne pas se faire remarquer
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [R] Tester la valeur de 4 GUICtrlCreateInput

#4

Message par Tlem »

Si je peut me permettre, le plus simple serait d'utiliser le composant _GUICtrlIpAddress_Create.

Cela diminuerait le code de manière significative. ;)
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é".
Répondre