aktor311 пишет:не соизволите ли объяснить мне суть работы loop на каком-нибудь простеньком примере.
Вот несколько простеньких примеров.
Пример бесконечного цикла.
С Goto:
i := 0
Label:
i++ ; увеличиваем i на единицу
ToolTip % i
Sleep, 300
goto Label
То же самое с Loop:
Loop {
ToolTip % A_Index
Sleep, 300
}
Здесь роль переменной-счётчика i играет встроенная переменная A_Index, которая автоматически увеличивается с каждой итерацией на единицу. Принципиальное отличие в том, что A_Index имеет смысл и доступна только внутри своего цикла, а переменную i можно изменить извне, что может привести к ошибке, если мы случайно используем эту же переменную где-то в другом месте.
Пример выхода из цикла по условию.
С Goto:
i := 0
Label1:
i++
ToolTip % i
Sleep, 300
if (i = 10)
goto Label2
goto Label1
Label2:
ToolTip
MsgBox, Завершено!
return
To же самое с Loop:
Loop {
ToolTip % A_Index
Sleep, 300
if (A_Index = 10)
break
}
MsgBox, Завершено!
return
Или проще:
Loop 10 {
ToolTip % A_Index
Sleep, 300
}
ToolTip
MsgBox, Завершено!
return
Ещё аналогичный пример с until:
Loop {
ToolTip % A_Index
Sleep, 300
} until A_Index = 10
ToolTip
MsgBox, Завершено!
return
А следующий пример будет работать по-другому:
while A_Index < 10 {
ToolTip % A_Index
Sleep, 300
}
ToolTip
MsgBox, Завершено!
return
Здесь проверка условия идёт в начале цикла, если условие не выполняется, следующая итерация отменяется и цикл прерывается.
Применение цикла для посыла клавиш:
Space::
while GetKeyState("Space", "P") {
SendInput, f
Sleep, 300
}
return
Пока удерживается пробел, будет выполняться условие GetKeyState("Space", "P") и будет посылаться f. Как только пробел будет отпущен, условие перестанет выполняться, и цикл завершится.
Надеюсь, что-то прояснилось.
Разработка AHK-скриптов:
e-mail
dfiveg@mail.ruTelegram
jollycoder