Autohotkey – problèmes lors de l'utilisation si, sinon, les instructions dans les fonctions

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")