Moin,
super-globale Variablen können in Funktionen nicht definiert werden, weil das Schlüsselwort
Global innerhalb und außerhalb von Funktionen unterschiedliche Auswirkungen hat.
Innerhalb von Funktionen bedeutet es, dass auf eine
globale Variable zugegriffen werden soll. Außerhalb von Funktionen wird eine
super-globale Variable angelegt.
Die Funktion
Global_Variables() im zweiten Beispiel muss aufgerufen werden, damit die Variablen
X1 und
X2 mit Werten versorgt werden. Sonst werden beim Start des SKripts nur leere Variablen angelegt.
Ähnlich ist es bei den super-globalen Variablen. Wenn eine Zeile wie
global X1 := Round(0.041*A_ScreenWidth) nicht ausgeführt wird, entsteht nur eine leere super-globale Variable.
Es sollte klappen, wenn Du das Lib-Skript "D:\Scripts\lib\Global_Variables.ahk" änderst. Das sieht zwar nicht unbedingt elegant aus, sollte aber funktionieren:
Code: Select all
Global X1, X2 ; legt beim Start des Skripts die super-globalen Variablen X1 und X2 an
Global_Variables(){
Static VarInit := Global_Variables() ; die Funktion ruft sich beim Start des Skripts einmal selbst auf und füllt die Variablen
X1 := Round(0.041*A_ScreenWidth)
X2 := Round(0.09*A_ScreenWidth)
}