[R] Switch ... Case étrange

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
GhostLine
Niveau 7
Niveau 7
Messages : 342
Enregistré le : jeu. 12 mars 2009 15:28
Localisation : Paris
Status : Hors ligne

[R] Switch ... Case étrange

#1

Message par GhostLine »

Salut à tous !

J'ai détecté un truc bizarre lors de la rédaction d'un de mes scripts, que je vous soumets :

Code : Tout sélectionner

#include <GUIConstantsEx.au3>

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case FileExists("c:\windows") = 0
            MsgBox(0, "", "Coin !")
        Case FileExists("c:\windows") <> 0
    MsgBox(0, "", "Coiiiiiiin !!!!")
    EndSwitch
WEnd
Si vous testez ce script sur un PC qui possède un répertoire c:\windows, vous devriez obtenir comme moi sytématiquement une msgbox avec le message "Coin !". Or, l'aide de FileExists nous dit :

Return Value
Success: Returns 1.
Failure: Returns 0 if path/file does not exist.

Je ne rencontre cette situation que lorsque j'utilise Switch ... Case.

Ma question : est ce un bug, ou bien quelque chose m'échappe-t-il ?
Modifié en dernier par GhostLine le jeu. 26 sept. 2013 14:23, modifié 1 fois.
Avatar du membre
FireFox
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 217
Enregistré le : dim. 14 oct. 2012 01:30
Localisation : Picardie/Île-de-France, France
Status : Hors ligne

Re: [..] Switch ... Case étrange

#2

Message par FireFox »

Bonjour,
Le switch compare la variable que tu lui passes avec les Case, or ici tu compares le message fenêtre à FileExists() <> 0 ou FileExists(...) = 0 ce qui donne soit True ou False (donc 1 ou 0).

Lorsqu'il n'y a pas de message fenêtre la fonction GUIGetMsg retourne 0 donc va matcher le Case valant False, donc pas directement ce que tu veux pour le FileExists.

Il faudrait mettre un If à la place en dehors du Switch pour les 2 derniers Case.

Cdlt, FireFox.
Avatar du membre
ZDS
Membre émérite
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: [..] Switch ... Case étrange

#3

Message par ZDS »

Bonjour,

Ou bien tu peux changer par un select, afin de garder une structure à base de case comme switch (parfois plus clair à la relecture qu'un amas de If/ElseIf/Else ^^ mais c'est exactement le même principe que des blocs If):
► Afficher le texteCode avec select
A bientôt !
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 !
Avatar du membre
GhostLine
Niveau 7
Niveau 7
Messages : 342
Enregistré le : jeu. 12 mars 2009 15:28
Localisation : Paris
Status : Hors ligne

Re: [..] Switch ... Case étrange

#4

Message par GhostLine »

Merci les gars ! Comme prévu, c'est tout à fait logique. Bon, bah je vais aller corriger trois ans de scripts que j'ai fait comme ça, moi ... :D
Répondre