1 (изменено: Hydrogenium, 2013-06-06 12:15:44)

Тема: AHK: Как корректно оглобалить переменные ?

есть 3 файла:

Start.ahk

+ открыть спойлер
#Persistent          
#SingleInstance Force 
#WinActivateForce     

#Include Config.ahk
SetDefaults()

#Include Test.ahk

Config.ahk

+ открыть спойлер
;~ cfg

Key1 = F9
Key2 = F11

SetDefaults()
{
    global
    w := 400
    h := 300 
    xF := 320
    yF := 200
}

test.ahk

+ открыть спойлер
Hotkey, %Key1%, func1
Hotkey, %Key2%, func2
Return


func1:
    xF := xF + 1
    yF := yF + 1
    FuncAction()    
Return


func2: 
    ;FuncAction()      
Return

;--------------------------------------------------------------------------------------------------
FuncAction()
{
    WinGet, active_id, ID, A 
    
    x:= xF + 10
    y:= yF + 10
    
    CoordMode, Mouse, Client       
    Click %x%, %y%     
}

как мне корректно оглобалить


w := 400
h := 300 
xF := 320
yF := 200

чтобы я мог ими пользоваться из любой функции без передачи параметров




т.е. xF и yF в этой f уже обнуляется

FuncAction()
{
    WinGet, active_id, ID, A 
    
    x:= xF + 10
    y:= yF + 10
    
    CoordMode, Mouse, Client       
    Click %x%, %y%     
}

а бесконечно передавать параметры во множество функций не оптимально для меня

2

Re: AHK: Как корректно оглобалить переменные ?

Ну так вы же их создаёте как глобальные в SetDefaults.

3

Re: AHK: Как корректно оглобалить переменные ?

YMP пишет:

Ну так вы же их создаёте как глобальные в SetDefaults.

почему они не доходят до FuncAction() ?

4

Re: AHK: Как корректно оглобалить переменные ?

Потому что в ней они не объявлены глобальными.
Если функция в основном будет работать с глобальными переменными, поставьте в первой её строчке global, тогда по умолчанию она будет считать все используемые переменные глобальными — кроме тех, что вы объявите со словом local.

5

Re: AHK: Как корректно оглобалить переменные ?

YMP пишет:

Потому что в ней они не объявлены глобальными.
Если функция в основном будет работать с глобальными переменными, поставьте в первой её строчке global, тогда по умолчанию она будет считать все используемые переменные глобальными — кроме тех, что вы объявите со словом local.

спасиб, вроде поканало )))