[Func] Bloc conditionnel rapide

Partagez des fonctions et des UDF AutoIt.
Règles du forum
.
Répondre
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

[Func] Bloc conditionnel rapide

#1

Message par ZDS »

Tous les développeurs ont un jour compris la puissance du a?b:c, chose qui n'existe pas sous AutoIt, quel dommage... Le code qui suit est plus que trivial, voire au même niveau que les lapins crétins ^^ :

Code : Tout sélectionner

Func cond($cond, $a,$b)
    If $cond Then Return $a
    Return $b
EndFunc
Mais il vous transforme 5 lignes de codes en une seule la plupart du temps, en rendant les changements plus faciles et la compréhension parfois bien meilleure.

Exemple pour une fenêtre que l'on cale dans un coin de l'écran :

Code : Tout sélectionner

Local $LR="right", $UD = "up", $ecart = 10, $GUI
If $LR = "left" And $UD = "up" Then
    $GUI = GUICreate("Ma fenetre dans un coin ["&$LR&","&$UD&"]", 200,100, _
            $ecart,$ecart, _
            $WS_POPUP+$WS_BORDER, $WS_EX_TOPMOST)
ElseIf $LR = "left" And $UD = "down" Then
    $GUI = GUICreate("Ma fenetre dans un coin ["&$LR&","&$UD&"]", 200,100, _
            $ecart,@DesktopHeight-100-$ecart, _
            $WS_POPUP+$WS_BORDER, $WS_EX_TOPMOST)
ElseIf $LR = "right" And $UD = "up" Then
    $GUI = GUICreate("Ma fenetre dans un coin ["&$LR&","&$UD&"]", 200,100, _
            @DesktopWidth-200-$ecart,$ecart, _
            $WS_POPUP+$WS_BORDER, $WS_EX_TOPMOST)
ElseIf $LR = "right" And $UD = "down" Then
    $GUI = GUICreate("Ma fenetre dans un coin ["&$LR&","&$UD&"]", 200,100, _
            @DesktopWidth-200-$ecart,@DesktopHeight-100-$ecart, _
            $WS_POPUP+$WS_BORDER, $WS_EX_TOPMOST)
EndIf
Avec la fonction cond(...) ça donne :

Code : Tout sélectionner

Local $LR="right", $UD = "up", $ecart = 10, $GUI
$GUI = GUICreate("Ma fenetre dans un coin ["&$LR&","&$UD&"]", 200,100, _
        cond($LR="left", $ecart, @DesktopWidth-200-$ecart), cond($UD="up", $ecart, @DesktopHeight-100-$ecart), _
        $WS_POPUP+$WS_BORDER, $WS_EX_TOPMOST)
Comme dit plus haut, ça peut sembler très con, mais ça dépanne beaucoup en matière de compréhension.
Vous pouvez même ajouter un système de Controle-Break (And_then ou Or_else) en obligeant les évaluations de chaine (mais ne permet plus de calculs) :

Code : Tout sélectionner

Func condEval($cond, $a,$b)
    If $cond Then Return Eval($a)
    Return Eval($b)
EndFunc
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 !
Répondre