[R] Attention au type de variable

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
jpascal
Niveau 6
Niveau 6
Messages : 226
Enregistré le : jeu. 16 oct. 2008 16:21
Status : Hors ligne

[R] Attention au type de variable

#1

Message par jpascal »

Bonjour,

Je viens de me rendre compte d'une chose.
Ce script me renvoie "BAD" alors que la variable $a est définie à "ok".

J'imagine que c'est parce que je compare une variable de type String à une valeur de type Integer.
Savez-vous où je peux trouver plus d'info à ce sujet ?

C'est à cause de cela qu'il vaut mieux utiliser la fonction SetError() ?

Code : Tout sélectionner

Local $a = ""
$a = test()
If $a = 0 Then MsgBox(0, "", "BAD")

Func test()
    Return "ok"
EndFunc   ;==>test
Modifié en dernier par jpascal le ven. 04 sept. 2015 11:22, modifié 1 fois.
AutoIt 3.3.16.1 - AutoIt3Wrapper 21.316.1639.1
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2511
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Attention au type de variable

#2

Message par jguinch »

Voir dans l'aide : Language Reference / Operators, section Comparison operators (voir note en bas de page)
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Attention au type de variable

#3

Message par orax »

jpascal a écrit :C'est à cause de cela qu'il vaut mieux utiliser la fonction SetError() ?
Par exemple, au lieu de faire...

Code : Tout sélectionner

Func _division1($a, $b, ByRef $resultat)
    If $b <> 0 Then
        $resultat = $a / $b
        Return True
    Else
        Return False
    EndIf
EndFunc   ;==>_division1
... on peut faire

Code : Tout sélectionner

Func _division2($a, $b)
    If $b <> 0 Then
        Return $a / $b
    Else
        Return SetError(1)
    EndIf
EndFunc   ;==>_division2
Je me suis inspiré des exemples de Un problème bien ennuyeux. On voit que dans certains cas il ne sera pas facile de retourner une valeur (comme 1, 0, True ou False) indiquant qu'une erreur s'est produite.
En plus il pourrait avoir plusieurs types d'erreurs...

Code : Tout sélectionner

Func _division3($a, $b)
    If $b = 0 Then
        SetError(1)
    ElseIf $a = 0 Then
        Return SetError(2)
    ElseIf $a < 0 Then
        Return SetError(3)
    EndIf

    Return $a / $b
EndFunc   ;==>_division3
Dans cet exemple, on ne pourrait pas retourner un nombre pour indiquer le type d'erreur dans ce cas puisque la fonction _division3 retourne déjà un nombre.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
jpascal
Niveau 6
Niveau 6
Messages : 226
Enregistré le : jeu. 16 oct. 2008 16:21
Status : Hors ligne

Re: [..] Attention au type de variable

#4

Message par jpascal »

Merci pour ces explications. :)
AutoIt 3.3.16.1 - AutoIt3Wrapper 21.316.1639.1
Répondre