1

Тема: AHK: Повторить Loop кол-во раз из GUI

Доброго времени суток!
Столкнулся со следующей проблемой:
Необходимо ввести в GUI скрипта число, кол-во раз которого будет выполнен цикл. По умолчанию стоит 5. Упростил код для легчей наглядности.
Пример:

Gui, Add, Edit, x135 y175 w30 h15 vPovtor, 5
Gui, Show, w254 h200
return

sc29::
Gui, Submit, Nohide
loop, %Povtor%{
; Функция в цикле
}
return

Заранее спасибо!

2

Re: AHK: Повторить Loop кол-во раз из GUI

Так а проблема в чём?

3

Re: AHK: Повторить Loop кол-во раз из GUI

В принципе алгоритм правильный. Не вижу проблем.

4 (изменено: efremov30ev, 2021-03-04 10:04:33)

Re: AHK: Повторить Loop кол-во раз из GUI

Всем спасибо.
Сам сидел думал и не понимал почему цикл продолжается, оказалось проблема скрывалась в другом.

Внутри самой функции идёт подсчет сколько раз функция прошла через метку, например:

Gui, Add, Edit, x135 y175 w30 h15 vPovtor, 5
Gui, Show, w254 h200
return

sc29::
Gui, Submit, Nohide
i := 0
Loop{
Label1:
if (i == %Povtor%)
break

i++
; Функция...
Goto, Label1
}

Проблема сейчас в том, что скрипт должен прерваться, когда он пройдет, например, те же 5 раз пройдет через метку Label1, но он вообще не реагирует на переменную i

Заранее спасибо.

5

Re: AHK: Повторить Loop кол-во раз из GUI

Gui, Add, Edit, x135 y175 w30 h15 vPovtor, 5
Gui, Show, w254 h200
return

sc29::
Gui, Submit, Nohide
loop, %Povtor%{
; Функция в цикле
msgbox,% a_index
}
return
Win 10 x64
AHK v1.1.33.02
                       Справка тебе в помощь.

6

Re: AHK: Повторить Loop кол-во раз из GUI

efremov30ev, у Вас в последнем примере ветвление кода организовано не правильно. Если пользоваться индентацией, это существенно упростит понимание Вами, иерархии управляющих инструкций. В частности, "break", который Вы верно назначаете для "Loop", когда счётчик "i" равен значению "Povtor" — не имеет никакого воздействия на него, так как находится не в "Loop", а в "Label1" — бесконечного, безусловного перехода.

Таким образом, Ваш цикл с первой же строки попадает в бесконечное повторение одних и тех же инструкций своего тела, не завершив даже своей первой итерации. За то Ваш самый первый пример показывает решение в полном соответствии с задачей, что и вызывает недоумение и уточнение к нему от Alectric в предыдущем посте, это явно демонстрирует.