J'ai des problèmes lors de l'utilisation if
, else if
instructions à l'intérieur de Fonctions, elles ne reconnaissent pas mes vars, même si je les ai définies au niveau global au début du script …
global AR4toolCur := global AR4psetCollCurY := global AR4psetCollCurYselect := global AR4psetCollCurYfill := global AR4psetCollCurYeraser := global AR4psetCollCurYknife := ~l:: AR4toolCur := "Selection" ; means the current selected tool return AR4psetCollCurYperToolSelFn() ; Sel means Select, I want to pass the value of AR4psetCollCur*NameOfTheTool* to AR4psetCollCurY { msgbox, AR4psetCollCurYperToolSelFn will run`nAR4toolCur = %AR4toolCur% If (%AR4toolCur% := "Selection") ; this pass the value of AR4psetCollCur*NameOfTheTool* (in this case "select") to AR4psetCollCurY AR4psetCollCurY := AR4psetCollCurYselect Else If (%AR4toolCur% := "Fill") AR4psetCollCurY := AR4psetCollCurYfill Else If (%AR4toolCur% := "Eraser") AR4psetCollCurY := AR4psetCollCurYeraser Else If (%AR4toolCur% := "Knife") AR4psetCollCurY := AR4psetCollCurYknife msgbox, AR4psetCollCurY = %AR4psetCollCurY% return }
Cette fonction ci-dessus fonctionne.
Mon script de trous exécute cette fonction ci-dessus afin de passer la valeur de AR4psetCollCur*NameOfTheTool*
(outil actuel sélectionné) à AR4psetCollCurY
puis modifie la valeur AR4psetCollCurY
et l'utilise comme paramètre d'une autre fonction, puis il doit stocker la valeur modifiée de AR4psetCollCurY
dans AR4psetCollCur*NameOfTheTool*
C'est pourquoi j'utilise cette fonction ci-dessous, mais cela ne fonctionne pas, il voit toujours %AR4toolCur%
comme vide, pourquoi?
AR4psetCollCurYperToolStrFn() { msgbox, AR4psetCollCurYperToolStrFn will run`nAR4toolCur = %AR4toolCur% If (%AR4toolCur% := "Selection") AR4psetCollCurYselect := AR4psetCollCurY Else If (%AR4toolCur% := "Fill") ; I have tried AR4toolCur = Fill it doesn't work either { AR4psetCollCurYfill := AR4psetCollCurY msgbox, AR4psetCollCurYfill = %AR4psetCollCurYfill% } Else If (%AR4toolCur% := "Eraser") AR4psetCollCurYeraser := AR4psetCollCurY Else If (%AR4toolCur% := "Knife") AR4psetCollCurYknife := AR4psetCollCurY return }
Merci.
J'ai des problèmes lors de l'utilisation si, sinon, si les instructions à l'intérieur de Fonctions, elles ne reconnaissent pas mes vars, même si je les ai définies au niveau global au début du script …
Vous croyez que le problème concerne les énoncés if / else if, mais les éléments indiquent des problèmes avec les variables locales / globales.
Vous devez définir une variable comme globale, dans une fonction afin de désigner la version globale de la variable (plutôt que la version locale de la variable).
Exemple de code:
^q:: vText := "hello" ;the global version of vText Func1() Func2() Func3() Return Func1() { MsgBox %vText% ;the function's local version of vText is blank Return } Func2() { global vText MsgBox %vText% ;the function uses the global version of vText Return } Func3() { global MsgBox %vText% ;the function uses the global versions for all variables Return }
Remarque:
Les lignes «if» devraient être sous la forme:
If (AR4toolCur = "Selection")
ne pas:
If (%AR4toolCur% := "Selection")