Page 1 sur 1

[R] Perdu avec le If Not

Posté : jeu. 21 févr. 2008 12:55
par Lems
Bonjour,

J'ai voulu remplacer mes

Code : Tout sélectionner

If ... Then (rien) Else ... EndIf[/autoit] par des [autoit]If Not ... Then ... EndIf
N'arrivant pas au résultat voulu j'ai fait un test pour voir si j'avais compris comment cela fonctionnait :

Code : Tout sélectionner

$i=1
MsgBox(0,"","On fixe i=" &$i)

If $i=1 Then
    MsgBox(0,"Cas vrai","i est à 1")
Else
    MsgBox(0,"Cas faux","i n'est pas égale à 1")
EndIf

If Not $i=1 Then
    MsgBox(0,"Cas vrai","i est différent de 1")
Else
    MsgBox(0,"Cas faux","i n'est pas différent de 1")
EndIf

$i=5
MsgBox(0,"","On fixe i=" &$i)

If $i=1 Then
    MsgBox(0,"Cas vrai","i est à 1")
Else
    MsgBox(0,"Cas faux","i n'est pas égale à 1")
EndIf

If Not $i=1 Then
    MsgBox(0,"Cas vrai","i est différent de 1")
Else
    MsgBox(0,"Cas faux","i n'est pas différent de 1")
EndIf
J'obtiens dans le premier cas (i=1) que i est à 1 et que 1 n'est pas différent de 1. donc là ça va :)
Mais dans le second cas (i=5) il me retourne i n'est pas égale à 1 et i n'est pas différent de 1 :shock: .

Je ne comprend pas d'où viens mon erreur ... Qui peut m''aider ? :cry:

Re: [..] Perdu avec le If Not

Posté : jeu. 21 févr. 2008 14:24
par Tlem
Sur le principe, le résonnement est bon, mais lorsque je vous ait orienté vers le If Not, c'était surtout par rapport à votre code, dans lequel vous aviez une structure du genre :

Code : Tout sélectionner

If $i=X then
     Votre code de 3 kilometres de long  ;)
Else 
     Msgbox(0,"Erreur","Erreur")
EndIf

; Ici on sort du programme
 
La logique voudrait plutôt ce type là :

Code : Tout sélectionner

If Not $i <> X then
     Msgbox(0,"Erreur","Erreur")
     Exit     ; Ici on sort du programme
EndIf

     Votre code de 3 kilometres de long  ;)

; Ici on sort du programme
Ou

Code : Tout sélectionner

If Not FileExists($File) then
     Msgbox(0,"Erreur","Erreur")
     Exit     ; Ici on sort du programme
EndIf

     Votre code de 3 kilometres de long  ;)

; Ici on sort du programme

Re: [..] Perdu avec le If Not

Posté : jeu. 21 févr. 2008 15:11
par Lems
Re bonjour,

J'avais bien compris ce pourquoi vous me l'aviez orienté mais lorsque je l'adapte, il ne fonctionne plus, mon test est systématiquement faux. :cry:
C'est pour ça que j'ai fait ce petite exemple mais je ne comprend pas que la seconde condition est systématiquement fausse ...

Aussi, dans

Code : Tout sélectionner


If Not $i <> X then
     Msgbox(0,"Erreur","Erreur")
     Exit     ; Ici on sort du programme
EndIf

     mon code de 3 kilometres de long qui fonctionne quand même  ;p

 
le sigle " <> " a quel signification ? c'est un différent ? :idea:

Re: [..] Perdu avec le If Not

Posté : jeu. 21 févr. 2008 15:19
par Tlem
Lems a écrit :le sigle " <> " a quel signification ? c'est un différent ?
Absolument.

Voici un extrait de la doc de la fonction IF :
Remarks

If statements may be nested.
The expression can contain the boolean operators of AND, OR, and NOT as well as the logical operators <, <=, >, >=, =, ==, and <> grouped with parentheses as needed.
Vous remarquez la petite annotation de fin de phrase.
Donc si vous modifier votre code comme ceci, il fonctionne :

Code : Tout sélectionner

$i=5

If Not ($i=1) Then
    MsgBox(0,"Cas vrai","i est différent de 1")
Else
    MsgBox(0,"Cas faux","i n'est pas différent de 1")
EndIf
Et oui tout çà pour des parenthèses (Je me suis fait piégé aussi) ... :?

Re: [R] Perdu avec le If Not

Posté : jeu. 21 févr. 2008 15:30
par ani

Re: [R] Perdu avec le If Not

Posté : jeu. 21 févr. 2008 17:34
par Lems
Merci beaucoup tous les deux !