1 (изменено: fgslm, 2020-07-24 00:27:01)

Тема: AHK: Внятное пояснение скобок и return к ним

Я уже который раз вчитываюсь в справку, но не могу понять ни на примерах ни образно:
На какой#
Нужны { } в AHK и какую роль они играют
написано дословно "обеспечивает последовательное выполнение команд"
что относится к последовательности или самим командам нигде особо не поясняется
Т.е. если я напишу 6 строк кода без скобок они в случайном порядке выполнятся или что?
И зачем так много скобок?
Почему не используется else в случае применения скобок - её функция как-то кастрируется написанием скобок - в результате при написании else внутри  - код выдаёт ошибку.
Если напишу

loop
проверять что-то 1
{
делать что-то ;Ну в случае с действиями мне понятно. Очередность их строго важна.
}
проверять что-то еще 2 ;проверка второго выполнится рандомно или также по порядку написания?
{
Делать что-то другое
}
проверять что-то еще 3 ;проверка 3-го выполнится рандомно или также по порядку написания?
{
Делать что-то 3-е
}
return ;вернёт код к началу loop

А если напишу

loop {
проверять что-то 1
{
делать что-то ;Ну в случае с действиями мне понятно. Очередность их строго важна.
return ; если написать здесь. Куда вернётся?
}
проверять что-то еще 2 ;проверка второго выполнится строго по порядку написания?
{
Делать что-то другое
return ; если написать здесь. Куда вернётся?
}
проверять что-то еще 3 ;проверка 3-го выполнится строго по порядку написания?
{
Делать что-то 3-е
return ; если написать здесь. Куда вернётся?
}
return ;Нужен тут?
}
return ;Или тут? Вобще не понятно с точки зрения логики

А если еще мы присвоим переменные в таком цикле

loop 
a = 0 ;присваивать переменную чтобы она была видна во всём цикле здесь?
{
;или здесь?
проверять что-то 1
{
делать что-то ;Ну в случае с действиями мне понятно. Очередность их строго важна.
a = 0  ;а если присвоить переменную здесь? то через сколько скобок вниз или вверх она будет видна?
return ; если написать здесь. Куда вернётся?
}
проверять что-то еще 2 ;проверка второго выполнится строго по порядку написания?
a = 0  ;а если здесь? то будет ли она видна наверху? И в последовательности её увидит скрипт и откуда она будет видна еще?
{
Делать что-то другое
return ; если написать здесь. Куда вернётся?
}
проверять что-то еще 3 ;проверка 3-го выполнится строго по порядку написания?
a = 0  ;а если здесь? 
{
Делать что-то 3-е
return ; если написать здесь. Куда вернётся?
}
a = 0  ;а если здесь? 
KeyWait, % key ;Мне писали пример ожидания клавиш внизу цикла. Но с точки зрения логики я вобще не понимаю как можно ждать клавишу внутри, когда столько скобок выполняют проверку кода строго в последовательност инаписания строк.
return ;Нужен тут?
}
return ;Или тут? Вобще не понятно с точки зрения логики

endы вообщене используются, я уже даже боюсь заикаться про них. Непонятно чем они заменены.
Вобщем очено непонятная каша получается.
В целом вопрос о том, как грамотно разделить код на блоки подчиняющиеся единому управлению из одного места.

2 (изменено: __Михаил__, 2020-07-24 01:29:26)

Re: AHK: Внятное пояснение скобок и return к ним

Ну ёпрст!
Изучите Питон, там принцип без этих {} и если не выйдет - кодирование не ваше.

Принцип предельно прост - ограничить строки кода. Сделать привязку к условию, функции и т.д.
В Питоне это отступы - то что вы в упор не хотите видеть / уважать.

Return - возврат на ступень выше, чаще выход из текущей функции, цикла, команды, метки и т.д. +вывод информации (в АХК только одно значение).

С переменной "a" уже должно быть всё ясно - как только она объявлена - она существует и видна всем и вся, что находиться ниже, в этой же самой функции.

KeyWait - не просто так, вы желаете выполнения кода, но скрипт делает 'свои дела' слишком быстро если не указать задержек, кнопка может повторно запустить функцию, оно вам надо?

Win10x64, AHK v1.1.30.03

3

Re: AHK: Внятное пояснение скобок и return к ним

Вот пример с переменной A для наглядности:

F2::
ToolTip, 1. A = %A%	; Отобразить значение в переменной 'A'.
Sleep, 2000		; Подождать 2 сек.
A += 1			; Объявить переменную и присвоить ей значение +1.
ToolTip, 2. A = %A%	; Отобразить значение в переменной 'A'.
Sleep, 2000		; Подождать 2 сек.
ToolTip			; Убрать подсказку.
Return

После первого запуска мы видим, что первый раз переменная пуста - её не существует. Затем она уже будет создана глобально.
После второго нажатия на F2 подсказка покажет её уже не пустой.

Win10x64, AHK v1.1.30.03

4

Re: AHK: Внятное пояснение скобок и return к ним

Вот пример использования скобок и 'Return':

F2::
A += 1
If A
 ToolTip, %A%
Return		; Тут происходит выход, далее код можно сказать не существует для скрипта...
A++		; и выполняться не будет.
Return


F6::
A += 1
If A
{
 ToolTip, %A%
 A++
}
Return
Win10x64, AHK v1.1.30.03

5

Re: AHK: Внятное пояснение скобок и return к ним

fgslm пишет:

endы вообщене используются

Это концовка функции / метки? Если так, то Return для этого и есть - универсальная штука для всего и вся.

Win10x64, AHK v1.1.30.03

6 (изменено: fgslm, 2020-07-24 08:05:15)

Re: AHK: Внятное пояснение скобок и return к ним

__Михаил__ пишет:

отступы - то что вы в упор не хотите видеть / уважать.

Это не я не хочу "видеть/уважать", это в интерпретаторе кода не поставляется функции форматирования, а те любительские наработки сторонних кодов/плагинов либо не становятся как надо либо нечитабельны/не универсальны/костыльны впринципе.

Вон щас только пытался понять https://github.com/StanSS/AutoHotkey/bl … axTidy.ahk китайскую версию Auto-Syntax-Tidy, потому что других в поиске просто нет, и старые ссылки либо не работают, либо ведут не туда --->>>

__Михаил__ пишет:

Return - возврат на ступень выше

Вот что подразумевается под ступенью?

__Михаил__ пишет:

в АХК только одно значение

Т.е. возврат на "ступень" "выше". Что считается ступенями мы еще не разобрались.

__Михаил__ пишет:

"a" как только она объявлена - она существует и видна всем и вся, что находиться ниже, в этой же самой функции.

А циклы? А области if { } Кроме функций и циклов в AHK больше ничего не существует? Я забыл про команды, метки, и присвоение переменных.
Т.е. следуя из вашего ответа переменная не видна после "return" и "}"

__Михаил__ пишет:

метки?

По метке у меня вообе отдельный ужас. Нигде нету классификации циклов, хотя судя по примерам Метка - Т.е. Label является циклом также как и Loop или while, и разница между ними в том что к метке можно обращаться откуда-то еще? непонимаю почему никто об этом не пишет.

__Михаил__ пишет:

KeyWait - не просто так, вы желаете выполнения кода, но скрипт делает 'свои дела' слишком быстро если не указать задержек, кнопка может повторно запустить функцию

Да я не против, просто чисто логически же код как минимум один раз пройдёт, а там может быть что-то важное?

__Михаил__ пишет:

Вот пример с переменной A для наглядности:

F2::
ToolTip, 1. A = %A%	; Отобразить значение в переменной 'A'.
Sleep, 2000		; Подождать 2 сек.
A += 1			; Объявить переменную и присвоить ей значение +1.
ToolTip, 2. A = %A%	; Отобразить значение в переменной 'A'.
Sleep, 2000		; Подождать 2 сек.
ToolTip			; Убрать подсказку.
Return

Опять же в случае с Return-ом куда он "возвращает" и что? Моей гуманитарной природе впринципе всегда резало слух употребление слова "возвращает", когда мы ничего ни откуда не брали. Но я смирился с этим, временно) Воспринимая как данность издержек работы программистов находящихся подолгу в условиях социальной изоляции, и потому не склоняющихся языком выражать логически правильный для восприятия посыл. Но всё же когда-то в будущем надеялся получить какое-то внятное объяснение изначально лексически-искаверканному переводу значения этого слова(понимая что оно всё же англояцизм), но надеясь на помощь более богатого, и могучего "русского".
Ну это ладно.
В случае с F2:: мы же не начинали функцию или цикл, куда и что у нас "возвращает" return? Вы понимаете моё негодование?

__Михаил__ пишет:

После первого запуска мы видим, что первый раз переменная пуста

С этим принципом я более-менее знаком из работы компиляторов, когда они при первом запуске буферизируют код, а "затем уже", удаляя всё лишнее, читают его начистую.

__Михаил__ пишет:

Вот пример использования скобок и 'Return':

F2::
A += 1
If A
 ToolTip, %A%
Return		; Тут происходит выход, далее код можно сказать не существует для скрипта...
A++		; и выполняться не будет.
Return

Ну тут вобще дич - у меня просто мозг сломался: Куда второй return возвращает? Это мне было боле менее понятно в каком-то языке где мне всё же удалось установить плагин, и он показывал однородные (открывающие и закрывающие) команды одним цветом. Но тут - на сером фоне, черными буквами. Я пытаюсь понять. Наверно Returnom можно и гвозди забивать. Я понимаю русскую изобретательность в применении тех или иных инструментов, но на мой взгляд тут отсутствет культура методики, и это ведёт в конечном счете к хаосу и непониманию.

__Михаил__ пишет:

Return для этого и есть - универсальная штука для всего и вся.

Вот это то меня и смущает, мы пытаемся сапогом есть кашу, бросать снег, ходить по дому, пинать соседа... и еще 1000 вещей, а как только начинаем думать что может удастся им еще и воду черпать... То тут скрипт выдаёт ошибку и пишет "Syntax Error". И тут упираемся в отсутствие справки по этому случаю, и заходим в тупик.
Пытаясь нащупать границы возможностей тех или иных команд, и не нахожу их.

7 (изменено: pro100andrik94, 2020-07-24 19:10:23)

Re: AHK: Внятное пояснение скобок и return к ним

fgslm пишет:

Это не я не хочу "видеть/уважать", это в интерпретаторе кода не поставляется функции форматирования, а те любительские наработки сторонних кодов/плагинов либо не становятся как надо либо нечитабельны/не универсальны/костыльны впринципе.

То что сейчас во многих крупных проектах реализованые интерпретаторы которые делают отступы вместо вас то это хорошо, но вот к сожалению AHK бессплатный open-source проект который вообще не задумывался как язык програмирования, а был сделан для того чтобы упростить работу в некоторых задачах при помощи создания скриптов. Делать отступы это уже дело сугубо ваше, что с отступами, что без код будет работать одинаково, это влияет только на читабельность.

fgslm пишет:

Я уже который раз вчитываюсь в справку, но не могу понять ни на примерах ни образно:
На какой#
Нужны { } в AHK и какую роль они играют
написано дословно "обеспечивает последовательное выполнение команд"
что относится к последовательности или самим командам нигде особо не поясняется
Т.е. если я напишу 6 строк кода без скобок они в случайном порядке выполнятся или что?
И зачем так много скобок?
Почему не используется else в случае применения скобок - её функция как-то кастрируется написанием скобок - в результате при написании else внутри  - код выдаёт ошибку.

Фигурные скобки в AHK используються для объединения двух и более команд в блоки. А это в свою очередь нужно чтобы при использовании команд if или цикла loop выполнялся этот блок (при условии если там больше одной строчки кода, так как если у вас одна строчка то скобки можно не использовать), ибо если не поставить скобок то программа будет работать только с первой строчкой и если у вас будет такой код.

...
if (условие)
первая строчка кода
первая строчка кода
else 
...

То вам выдаст ошибку что у вас используется else без if, но вот если взять две строчки кода в фигурные скобки то и ошибки не будет так как компилятор будет знать что после if идет блок и после этого блока будет правильно читаться условие else.

...
if (условие)
{
    первая строчка кода
    первая строчка кода 
}
else 
...

Подробней можете ознакомится тут .
А вот в функции фигурные скобки необходимы, так как вы тогда не сможете вызвать Return который будет возвращать вам результат выполнения функции. Возможно есть еще примеры где их надо использовать, но вот ставить их без нужды не надо.

fgslm пишет:

По метке у меня вообе отдельный ужас. Нигде нету классификации циклов, хотя судя по примерам Метка - Т.е. Label является циклом также как и Loop или while, и разница между ними в том что к метке можно обращаться откуда-то еще? непонимаю почему никто об этом не пишет.

Так в чем ужас? Метка это не цикл, а точка в коде куда можно обратится например оператором Goto или Gosub. Метку можно использовать как цикл постоянно возвращаясь к ней до настижения определенного условия, но по сути самим циклом в AHK являеться только команда loop и её вариации, так как команда Break работает только с ними. А вот метку можно использовать еще как функцию, т.е. код с функией.

Var := 1
;часть кода с Var
;Дальше нам надо пересчитать Var
Var := Add(2, 3) 
;работаем с новым значением Var

;функция в любой часте кода
Add(x, y)
{
	return x + y
}

Код с gosub.

Var := 1
;часть кода с Var
;Дальше нам надо пересчитать Var
gosub temp
;работаем с новым значением Var

;gosub в любой часте кода
temp:
Var := 2+3
return

По сути gosub может работать как функция, но мы же не говорим что это функция.

fgslm пишет:

Я пытаюсь понять. Наверно Returnom можно и гвозди забивать. Я понимаю русскую изобретательность в применении тех или иных инструментов, но на мой взгляд тут отсутствет культура методики, и это ведёт в конечном счете к хаосу и непониманию.

Все что делает Return так это "Возвращает значение функции и останавливает чтение скрипта" либо как написано в официальной документации "If there is no caller to which to return, Return will do an Exit instead". То что Return исполюзуют вместо Exit это просто так привыкли и все так делают, а по сути если нечего возвращать он делает работу команды Exit и правильно было бы тогда писать именно Exit. Когда будете читать чужие коды то надо просто привыкнуть к тому что все постоянно используют return, даже когда нечего возвращать, конечно в том случае если вы будете у себя использовать Exit, а не будете писать Return как это делают все.

fgslm пишет:

Вот что подразумевается под ступенью?
Т.е. возврат на "ступень" "выше". Что считается ступенями мы еще не разобрались.

Тут под ступенью подразумевается выполнение функции или уход в Gosub(как это я сам понимаю). Например у вас в коде есть функция которая что-то делает, и чтобы обозначить где она закончилась то вы в конце её кода пишете Return и в итоге при вызове функции код уходит в саму функцию и уже после того как "наткнется" на Return, он закончит выполнение функции и "вернется на ступень выше" т.е. к моменту где он начал выполнять код. Так же и работает с Gosub. Вот и кстати в русскоязычной документации есть пример в разнице работе Return и Exit.

8 (изменено: pro100andrik94, 2020-07-24 19:11:04)

Re: AHK: Внятное пояснение скобок и return к ним

fgslm пишет:

А если еще мы присвоим переменные в таком цикле

loop 
a = 0 ; тело цикла должно начинатся со скобок т.е. это должен быть блок, если это будет одна строчка то 
; в цикле будет исполняться только она. для того чтобы использовалось несколько команд надо делать блок фигурными скобками
;loop должен быть здесь
{
a = 0 ; переменную нужно тогда обьявлять тут
проверять что-то 1
{
делать что-то ;
a = 0  ;тут переменная перезапишеться новым значением и будет видна в следующем действии по порядку так же и во всем скрипте
return ; тут return ничего не вернет, а выполнит действия команды Exit, закончит выполнение скрипта и будет ждать 
;нажатия горячей клавиши, а если её нет и не указан #Persistent то скрипт закроется. Подробней об этом написано в Exit https://www.autohotkey.com/docs/commands/Exit.htm
}
проверять что-то еще 2 ;проверка второго выполнится строго по порядку написания
a = 0  ;а если здесь? то будет ли она видна наверху? Она будет видна везде в скрипте, так как это не функция. Тут почитайте https://ahk-wiki.ru/variables
{ ;тут скобки не нужны, так как если блок не стоит сразу после проверки то выполнятсья после проверки будет только первая строчка и дальше 
;скрипт будет выполнятся по порядку
Делать что-то другое
return ; если написать здесь то return тоже выполнит действия команды Exit 
}
проверять что-то еще 3 ;проверка 3-го выполнится строго по порядку написания? да.
a = 0  ;а если здесь? то тогда выполнится эта строчка и код будет выполнятся дальше по порядку и следующие скобки не нужны
{
Делать что-то 3-е
return ; если написать здесь. Куда вернётся? аналогично что и выше, будут выполнены дейстивия команды Exit
}
a = 0  ;а если здесь? так же будет как и сверху перезапишеться новым значением и будет видна в следующем действии по порядку так же и во всем скрипте
KeyWait, % key ;как это аргументировали? для чего ставить ожидание клавиши?
return ;Нужен тут? нет, не нужен
}
return ;Или тут? Вобще не понятно с точки зрения логики
; в конце нужен только если вам надо остановить выполнение скрипта выполнив действие Exit, если скрипт должен делать дальше действия то не надо писать ничего

Надо примерно так.

loop 
{
a = 0 
проверять что-то 1
{
делать что-то ; тут скобки нужны только если будет больше одной строки кода
}
проверять что-то еще 2
Делать что-то другое ; если делать будем одной строчкой то можно написать и без скобок
проверять что-то еще 3 
{
Делать что-то 3-е ; тут скобки нужны только если будет больше одной строки кода
}
}
return ;если после цикла нам надо остановить скрипт

Ну или точный пример.


loop 
{
a := 0
if (a = 0)
b := 1
if (b = 1)
{
    a := 21
    b := 31
}
if (a = 0)
a := 111 ;это не выполнится так как условие не соблюдено
a := 333 ;а это выполнится так как без скобок проверяеться только первая строчка и скрипт будет делать следующие строки уже вне проверок
}

9

Re: AHK: Внятное пояснение скобок и return к ним

pro100andrik94 пишет:

else без if, но вот если взять две строчки кода в фигурные скобки то и ошибки не будет так как компилятор будет знать что после if идет блок и после этого блока будет правильно читаться условие else

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

pro100andrik94 пишет:

return ;если после цикла нам надо остановить скрипт

Но вот почему-то когда я после цикла со скобками не пишу return - у меня скрипт вообще не запускается, либо цикл не выполняется. Можно ли выполнять цикл без return-ов?

pro100andrik94 пишет:

и останавливает чтение скрипта" л

Странно, у меня наоборот продолжает. Т.к. без него скрипт почему-то не работает.
А разницу межуд Exit и end кто-то пояснит? Что из них действует глобально, а что локально? И для какого синтаксиса "открытия" команды?

10 (изменено: fgslm, 2020-07-24 15:48:46)

Re: AHK: Внятное пояснение скобок и return к ним

pro100andrik94 пишет:

... if (условие)
{
первая строчка кода
первая строчка кода
}
else

Почему-то выдаёт ошибку такого вида код, когда один за другим несколько блоков с else размещаю...

11 (изменено: pro100andrik94, 2020-07-24 19:11:37)

Re: AHK: Внятное пояснение скобок и return к ним

fgslm пишет:

Можно ли выполнять цикл без return-ов?

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

fgslm пишет:

Странно, у меня наоборот продолжает. Т.к. без него скрипт почему-то не работает.

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

fgslm пишет:

Почему-то выдаёт ошибку такого вида код, когда один за другим несколько блоков с else размещаю...

Скорее всего вам надо использовать конструкцию "else if" но все же лучше бы было увидеть ваш код в котором вылезает ошибка.

fgslm пишет:

А разницу межуд Exit и end кто-то пояснит? Что из них действует глобально, а что локально? И для какого синтаксиса "открытия" команды?

О каком end идет речь? Насколько я знаю то в AHK нет оператора end.

12 (изменено: fgslm, 2020-07-24 16:15:09)

Re: AHK: Внятное пояснение скобок и return к ним

pro100andrik94 пишет:

о каком end идет речь? Насколько я знаю то в AHK нет оператора end.

То я так привык - что у каждой открывающей команды, есть закрывающая, в противном случае код для меня становится нечитабельным.

pro100andrik94 пишет:

но все же лучше бы было увидеть ваш код в котором вылезает ошибка.

Ну вот http://forum.script-coding.com/viewtopi … 96#p140896 то он например, если там в конце убрать return, он тупо не выполняется.

13

Re: AHK: Внятное пояснение скобок и return к ним

Return "в цикле вне функции" работает также как Exit, сам только заметил. Возможно этого нет в справке, обычно используются Break и Continue.


MsgBox 1
loop
{
	ToolTip % A_Index
	Return
}
MsgBox 2

Отличие Exit от Return наглядно показано в справке по Exit.

fgslm пишет:

Ну вот http://forum.script-coding.com/viewtopi … 96#p140896 то он например, если там в конце убрать return, он тупо не выполняется.

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

if (...) {
Send {...}
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v2004, AutoHotkey_L v1.1.33.02 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

14

Re: AHK: Внятное пояснение скобок и return к ним

serzh82saratov пишет:

Continue.

Это для чего в AHK используется?

serzh82saratov пишет:

ваши троеточия чтобы это запустить.

Где это можно запустить?
Я думал есть компиляторы которые опускают все несостыковки и выдают в целом ошибки отступов и отсутствующих команд

15 (изменено: pro100andrik94, 2020-07-24 19:12:03)

Re: AHK: Внятное пояснение скобок и return к ним

fgslm пишет:

Это для чего в AHK используется?


Поиск по документации никто не отменял.

fgslm пишет:

Где это можно запустить?
Я думал есть компиляторы которые опускают все несостыковки и выдают в целом ошибки отступов и отсутствующих команд

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

16 (изменено: fgslm, 2020-07-24 17:04:52)

Re: AHK: Внятное пояснение скобок и return к ним

serzh82saratov пишет:

if (...) { Send {...}

Да посути всё что нужно это последовательное выполнение проверок и действий к ним. Но я и этого не могу добиться, потому что во ткак вы говорите оказыватеся return выводит из цикла, а мне надо его довести до конца.
ВОТ БЕЗ ТРОЕТОЧИЯ!!!

Loop 
;где-то здесь проверка на наличие функций прерывающих цикл и выход из цикла
{
;Или здесь? Я не пойму
a := 1
if  a >  0{
Send {1}
b := 1
if b > 0
{
Send {2}
c := 1
if  c >  0{
Send {3}
}
}
}
;Или тут ставить ретурн?
}
;И надо тут ретурн ставить или нет?
;И почему в коде такого вида else при любом раскладе выдаёт ошибку. Я уже 1000 и 1 способом менял их расположение и ;вариации скобок { } с else, они не работают так, как это задумано!!

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

17

Re: AHK: Внятное пояснение скобок и return к ним

fgslm, вот когда сделаете код без троеточия как написал serzh82saratov

serzh82saratov пишет:

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

тогда и можно будет запустить ваш код и увидеть где у вас в скрипте ошибка, или где он работает неправильно.

18

Re: AHK: Внятное пояснение скобок и return к ним

pro100andrik94 пишет:

тогда и можно будет запустить ваш код и увидеть где у вас в скрипте ошибка, или где он работает неправильно.

Вон сверху я сделал

19 (изменено: pro100andrik94, 2020-07-24 19:12:35)

Re: AHK: Внятное пояснение скобок и return к ним

fgslm пишет:

Да посути всё что нужно это последовательное выполнение проверок и действий к ним. Но я и этого не могу добиться, потому что во ткак вы говорите оказыватеся return выводит из цикла, а мне надо его довести до конца.

Последовательность проверок зависит от того когда вам это надо.

fgslm пишет:

И почему в коде такого вида else при любом раскладе выдаёт ошибку. Я уже 1000 и 1 способом менял их расположение и ;вариации скобок { } с else, они не работают так, как это задумано!!

А как вообще вы код запускаете? какую ошибку вам выдает? вместе с троеточиями запускаете? если да то у вас будет выдавать ошибку, пока вы не исправите все проблемы с синтаксисом. Если у вас уже есть код без троеточий, который вы запускаете и компилятор ругается именно на else то покажите этот код и можно будет вам помочь.

20

Re: AHK: Внятное пояснение скобок и return к ним

pro100andrik94 пишет:

вместе с троеточиями запускаете? если да то у вас будет выдавать

я уже 10 раз сделал код без троеточия - И поместил ЕГО СЮДА ! ВОн он АТМ СВЕРХУ Я ЕЩЕ раз напишу:

fgslm пишет:
serzh82saratov пишет:

if (...) { Send {...}

Да посути всё что нужно это последовательное выполнение проверок и действий к ним. Но я и этого не могу добиться, потому что во ткак вы говорите оказыватеся return выводит из цикла, а мне надо его довести до конца.
ВОТ БЕЗ ТРОЕТОЧИЯ!!!

Loop 
;где-то здесь проверка на наличие функций прерывающих цикл и выход из цикла
{
;Или здесь? Я не пойму
a := 1
if  a >  0{
Send {1}
b := 1
if b > 0
{
Send {2}
c := 1
if  c >  0{
Send {3}
}
}
}
;Или тут ставить ретурн?
}
;И надо тут ретурн ставить или нет?
;И почему в коде такого вида else при любом раскладе выдаёт ошибку. Я уже 1000 и 1 способом менял их расположение и ;вариации скобок { } с else, они не работают так, как это задумано!!

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

21

Re: AHK: Внятное пояснение скобок и return к ним

Error:  Missing "}"

Эта ошибка вам ни о чём не говорит?

Пишите код сразу по человечески, с отступами, тогда будет сразу видно где ошибка.


Loop
{ 
	a := 1
	if a >  0
	{
		Send {1}
		b := 1
		if b > 0
		{
			Send {2}
			c := 1
			if c > 0
			{
				Send {3}
			}
		}
	}
}
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v2004, AutoHotkey_L v1.1.33.02 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

22

Re: AHK: Внятное пояснение скобок и return к ним

fgslm пишет:

И надо тут ретурн ставить или нет?

Нет, ведь цикл непрерывный, и его не надо отделять от выполнения последующего кода.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v2004, AutoHotkey_L v1.1.33.02 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

23 (изменено: Rumata, 2020-07-24 17:27:26)

Re: AHK: Внятное пояснение скобок и return к ним

Exit - выйти из любой (под)программы, как выйти из квартиры
Return - выйти из подпрограммы, точнее функции и вернуть какой-то результат, как выйти из квартиры и что-то оттуда вынести
Break - прекратить цикл, как ходил по кругу в квартире в определенной последовательности, нечаянно запнулся и перестал ходил по кругу
Continue - продолжить цикл, как ходил по кругу в квартире в определенной последовательности, нечаянно запнулся и продолжил ходить по кругу с начала

( 2 * b ) || ! ( 2 * b )

24

Re: AHK: Внятное пояснение скобок и return к ним

serzh82saratov пишет:

Пишите код сразу по человечески, с отступами

Чем их форматировать?

25 (изменено: pro100andrik94, 2020-07-24 19:13:18)

Re: AHK: Внятное пояснение скобок и return к ним

fgslm пишет:

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

Ваш код сделан так что он будет непрерывно выполнять проверки "if a >  0", "if b >  0" и "if c >  0" и в случае если например первая проверка будет провалена то он не сделает ничего. Насколько я понял то вам надо что-то такое.

check := 0
Loop
{ 
	a := 1
	if a >  0 
	{
		Send {1}
        sleep 1000
    }

    if check > 0 ; после каждого действия проверяеться условие на прерывание цикла
    break

	b := 1
	if b > 0
	{
		Send {2}
        sleep 1000
    }

    if check > 0
    break

    c := 1
	if c > 0
	{
		Send {3}
        sleep 1000
	}

    if check > 0
    break

}

F1::  						;в данном случае служит вместо функции для прерывания цикла
check := 1
Return ; или Exit, в данном случае без разницы

Код очень колхозный, но думаю вам так будет проще понять что да как тут использовать.

Rumata пишет:

Continue - продолжить цикл, как ходил по кругу в квартире в определенной последовательности, нечаянно запнулся и продолжил ходить по кругу с начала

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

26

Re: AHK: Внятное пояснение скобок и return к ним

fgslm пишет:

Чем их форматировать?

https://avatars.mds.yandex.net/get-zen_doc/1545908/pub_5d8b561b32335400aea6d5d0_5d8b68fe79c26e00ae002934/scale_1200

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v2004, AutoHotkey_L v1.1.33.02 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

27

Re: AHK: Внятное пояснение скобок и return к ним

И в коде выше я использовал sleep чтобы не было непрерывного спама кнопок. В коде его использовать не нужно без надобности. И нужно оговорку сделать что если не будут выполнены одно из условий "if a >  0", "if b >  0" и "if c >  0" то код будет дальше выполнятся по кругу не выполнив именно того условия в текущей итерации, которое не выполнилось.

28 (изменено: fgslm, 2020-07-24 18:09:48)

Re: AHK: Внятное пояснение скобок и return к ним

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

pro100andrik94 пишет:
fgslm пишет:

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

ваш код сделан так что он будет непрерывно выполнять проверки "if a >  0", "if b >  0" и "if c >  0" и в случае если например первая проверка будет провалена то он не сделает ничего. насколько я понял то вам надо что-то такое

check := 0
Loop
{ 
	a := 1
	if a >  0 
	{
		Send {1}
        sleep 1000
    }

    if check > 0 ; после каждого действия проверяеться условие на прерывание цикла
    break

	b := 1
	if b > 0
	{
		Send {2}
        sleep 1000
    }

    if check > 0
    break

    c := 1
	if c > 0
	{
		Send {3}
        sleep 1000
	}

    if check > 0
    break

}

F1::  						;в данном случае служит вместо функции для прерывания цикла
check := 1
Return ; или Exit, в данном случае без разницы

Код очень колхозный, но думаю вам так будет проще понять что да как тут использовать.

Да я сам колхозник, мне что-то похожее и надо

pro100andrik94 пишет:

"if a >  0", "if b >  0" и "if c >  0" то код будет дальше выполнятся по кругу не выполнив именно того условия в текущей итерации, которое не выполнилось.

Это мне и нужно - слежение за процессом - в этом же и суть автоматизации

pro100andrik94 пишет:

"не заканчивая маршрута, а перепрыгнув в точку начала последовательности"

ниче не понял. Где начинается последовательность? С цикла? Или первой строчки? Или с If? Или с { ?

F1::  						;в данном случае служит вместо функции для прерывания цикла
check := 1
Return ; или Exit, в данном случае без разницы

Ну вот тут у меня... Загвоздка. что видит первое скрипт? Моё нажатие F1? Или цикл в котором  if check > 0
    break а потом уже следует проверка нажатия F1(т.е. нет ли тут скрытой функции "goto" в тело функции чтобы проверить не нажата ли F1 а затем узнать чему равен chek)?
Всегда я думал что ретурн работает как перемещение к началу команды, для которой он является закрывающей строкой(по типу енд, но енд не возвращает к началу, а ретурн возвращает. Не значение или переменную, а именно выполнение скриптом кода)

29 (изменено: pro100andrik94, 2020-07-24 19:13:44)

Re: AHK: Внятное пояснение скобок и return к ним

fgslm пишет:

ниче не понял. Где начинается последовательность? С цикла? Или первой строчки? Или с If? Или с { ?

Цикл начинается со { которая идет после loop.

Loop
{ 			; <-------- тут			если вместо break написать continue то ваш код будет пропускать все что было после continue и начнет делать сразу следущую итерацию с этого места
check := 0 ; переместил присвоение переменной сюда, ибо если не сделать этого то после выполнения присвоения на кнопку F1 она будет иметь значение которое получила вне цикла 
; при выполнении нажатия F1 и поэтому будет каждый раз срабатывать первая же проверка на прерывание
	a := 1
	if a >  0 
	{
		Send {1}
        sleep 1000
    }

    if check > 0 ; после каждого действия проверяеться условие на прерывание цикла
    continue 

	b := 1
	if b > 0
	{
		Send {2}
        sleep 1000
    }

    if check > 0
    continue 

    c := 1
	if c > 0
	{
		Send {3}
        sleep 1000
	}

    if check > 0
    continue 

}

F1::  						;в данном случае служит вместо функции для прерывания цикла
check := 1
Return ; или Exit, в данном случае без разницы

30 (изменено: fgslm, 2020-07-24 18:30:14)

Re: AHK: Внятное пояснение скобок и return к ним

Подождите, вот я нажимаю F1::
Но откуда скрипт видит чему равен F1(т.е. как он перейдёт в функцию) если у нас цикл бесконечно по кругу ходит? И само нажатие F1 в цикле не проверяется. Скрипт занят циклом. Нужно какой-то приоритет нажатия F1 выделить?
Как
KeyWait, %F1 или что-то?
Видел команду Critical, что-то еще
Для меня проcто то что если расположить текст выше - он будет считаться приоритетным. Но это не работает в AHK

31

Re: AHK: Внятное пояснение скобок и return к ним

Напоминаю всем, что предложения начинаются с большой буквы и заканчиваются точкой. Исправьте!

32 (изменено: fgslm, 2020-07-24 19:08:29)

Re: AHK: Внятное пояснение скобок и return к ним

Rumata пишет:

Break - прекратить цикл, как ходил по кругу в квартире в определенной последовательности, нечаянно запнулся и перестал ходил по кругу
Continue

Я так понимаю что break и continue работают одинаково, если задать бесконечность циклу. То при break цикло снова будет запускаться до команды break, а при continue перейдёт к началу без прерывания? Что-то не складывается...
Мне было бы удобнее видеть информацию в графическом отображении нежели логическом - по крайней мере так вижу я:
https://i.ibb.co/N3VggbK/Image-0201.jpg

33

Re: AHK: Внятное пояснение скобок и return к ним

Если так понимать, то ничего не сложится.


Loop
{
	If A_Index < 3
		Continue
	If A_Index > 5
		Break
	MsgBox % A_Index
}
MsgBox Цикл завершен
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v2004, AutoHotkey_L v1.1.33.02 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

34 (изменено: pro100andrik94, 2020-07-24 19:19:04)

Re: AHK: Внятное пояснение скобок и return к ним

Critical по сути делает то что вы говорите "занят циклом". Если вы пропишите этот параметр то скрипт не будет делать никакие команды, пока не закончит ту, в которой прописан этот параметр. В документации все детально написано как этот параметр работает. А вот если его не указать то по стандарту он выключен и вы можете запустить любую другую команду назначенную на горячую клавишу (исключение BlockInput который вообще выключает возможность пользователю взаимодействовать с пк) когда вам надо и она будет выполнятся.

fgslm пишет:

То при break цикло снова будет запускаться до команды break

Нет! Break завершает цикл! Т.е. после его срабатывания ваш бесконечный цикл закончится! Но если быть точнее то он приостановится, и скрипт будет делать следующие команды, а когда вы обратитесь опять к скрипту то он продолжит с того момента на котором вы его прервали. Вот еще один колхозный пример.

a := 1
check := 0
start:
loop 
{

tooltip %a%
a++
sleep 500

if check > 0
break
}

F1::        ; тут мы прерываем цикл
check := 1
return

F2::        ; тут мы возвращаемся к нему
check := 0
goto start

35 (изменено: fgslm, 2020-07-24 19:19:46)

Re: AHK: Внятное пояснение скобок и return к ним

pro100andrik94 пишет:

Нет! Break завершает цикл! Т.е. после его срабатывания ваш бесконечный цикл закончится! Но если быть точнее то он приостановится, и скрипт будет делать следующие команды, а

Ну понятно, но у меня бесконечный цикл, и он сам начинается заново, поэтмоу я этого не вижу
Но по причине того, что скрипт затормаживается я не хочу его использовать, а лучше бы использовать условия работы цикла вообще - предопределяя его время и границы. В этом более автоматизации, чем ожидать вмешательства пользователя в нажатие чего-то что приведёт к прерыванию, а он возможно спит, или упал в обморок. На производстве такой скрипт не безопасен.
типа:

loop а > 0
{

}

и так  далее

36

Re: AHK: Внятное пояснение скобок и return к ним

Вопрос остаётся открытым:

fgslm пишет:

Подождите, вот я нажимаю F1::
Но откуда скрипт видит чему равен F1(т.е. как он перейдёт в функцию) если у нас цикл бесконечно по кругу ходит? И само нажатие F1 в цикле не проверяется. Скрипт занят циклом. Нужно какой-то приоритет нажатия F1 выделить?

Мне непонятно как в условиях однопотока, скрипт может выполнять цикл, и одновременно смотреть что у нас нажато в F1, и что в ней проверяя переменную.

37

Re: AHK: Внятное пояснение скобок и return к ним

В AHK условием цикла loop есть только количество его повторений. А если вы хотите чтобы у вас цикл перестал работать после достижения условия то вам надо его поставить в сам цикл. Мне кажется что вы просто зная синтаксис и логику команд другого языка, пытаетесь сделать так же в AHK, но к сожалению тут немного по другому это работает.

loop 
{
if а > 0
break
}

А так же вы можете посмотреть что делает ваш скрипт. Для этого вам надо прописать какую-то горячую клавишу в ваш скрипт, или же прописать туда #Persistent и после завершения всех действий он не закроется а в трее можно будет найти его иконку. На ней надо нажать правой кнопкой и там выбрать открыть.
https://cdn.discordapp.com/attachments/631818039599300640/736243591273250847/unknown.png
И там уже вы увидите что делал ваш скрипт. И еще можно через меню View посмотреть кучу полезной информации по переменным в скрипте, хоткеям и т.д.
https://cdn.discordapp.com/attachments/631818039599300640/736244735735365732/unknown.png

38 (изменено: fgslm, 2020-07-24 19:38:13)

Re: AHK: Внятное пояснение скобок и return к ним

pro100andrik94 пишет:

Вот еще один колхозный пример.



a := 1
check := 0
start:
loop 
{

  tooltip %a%
  a++
  sleep 500

  if check > 0
  break ;куда он ведёт?
}

F1::        ; тут мы прерываем цикл
check := 1
return

F2::        ; тут мы возвращаемся к нему
check := 0
goto start

Вобще, честно говоря уже перестал понимать ваш код на строке break, потмоу что вот тут все говорят про отступы и табуляцию. Но по логике вещей break должен стоять на том же отступе, что и начало цикла, которое он прерывает, иначе непонятно что он прерывает.

39 (изменено: fgslm, 2020-07-24 20:09:13)

Re: AHK: Внятное пояснение скобок и return к ним

pro100andrik94 пишет:

#Persistent и после завершения всех действий он не закроется а в трее можно будет найти его иконку. На ней надо нажать правой кнопкой и там выбрать открыть.
https://cdn.discordapp.com/attachments/631818039599300640/736243591273250847/unknown.png
И там уже вы увидите что делал ваш скрипт.

Так понятнее. Просто логов выполнения не хватало, и непонятно было что он делал а что нет.

Можно ли сделать так: чтобы при проверке определённых условий цикл переходил в другой цикл, и там оставался пока эти условия не изменятся:
типа:

loop{
a := 0
if a > 0 
goto: Pause
}

loop{
Pause ;
if a = 0 
break
}

40

Re: AHK: Внятное пояснение скобок и return к ним

fgslm пишет:

потмоу что вот тут все говорят про отступы и табуляцию.

Я вот не пойму, вы специально проигнорировали то что я вам два раза сказал о том что табуляции и отступы только для того чтобы код был читабельным для человека? Ладно. Повторю вам третий раз. Табуляции и отступы нужны только для того чтобы код был читабельным для человека! Для компилятора нет разницы есть ли в строке отступ или нет! Для примера, как бы вам было удобней читать чей-то код, вот так:

a := 1
check := 0
start:
loop 
{
    tooltip %a%
    a++
    sleep 500

    if check > 0
    break ;куда он ведёт?
  
  ;Тут может быть еще много кода но он будет пропущен если перед ним сработал break
} ; <----------- break ведет сюда, к скобке которая закрывает цикл

tooltip мы прервали цикл и скрипт покажет вам этот текст
return

F1::        ; тут мы прерываем цикл
check := 1
return

F2::        ; тут мы возвращаемся к нему
check := 0
goto start

Или вот так?

a := 1
                        check := 0
   start:
loop 
{

    tooltip %a%
a++
sleep 500

                if check > 0
       break ;куда он ведёт?
  
  ;Тут может быть еще много кода но он будет пропущен если перед ним сработал break
} ; <----------- break ведет сюда, к скобке которая закрывает цикл

    tooltip мы прервали цикл и скрипт покажет вам этот текст
     return

F1::        ; тут мы прерываем цикл
                                                 check := 1
return

                   F2::        ; тут мы возвращаемся к нему
check := 0
goto start

Что в одном варианте что в другом он выполнится компилятором одинаково.

fgslm пишет:

Просто логов выполнения не хватает, и непонятно что он делал а что нет.

Вы издеваетесь? Перед вами появляются все последние действия скрипта! Чего вам не хватает то?

41 (изменено: fgslm, 2020-07-24 20:12:24)

Re: AHK: Внятное пояснение скобок и return к ним

pro100andrik94 пишет:

Вы издеваетесь? Перед вами появляются все последние действия скрипта!

Я об этом и говорю, этого и не хватало. Переписал эту фразу в прошедшем времени, чтобы вам было понятнее. Просто писать каждый раз громоздкий код чтобы проверить логику работы команд в логе - не такое уж простое занятие.

pro100andrik94 пишет:

вот так:
Или вот так?

a := 1
                        check := 0
   start:
loop 
{

    tooltip %a%
a++
sleep 500

                if check > 0
       break ;куда он ведёт?
  
  ;Тут может быть еще много кода но он будет пропущен если перед ним сработал break
} ; <----------- break ведет сюда, к скобке которая закрывает цикл

    tooltip мы прервали цикл и скрипт покажет вам этот текст
     return --зачем ретурн тут?

F1::        ; тут мы прерываем цикл
                                                 check := 1
return 

                   F2::        ; тут мы возвращаемся к нему
check := 0
goto start

А return зачем? Вы им завершили ToolTip или что? цикл же закрыт скобкой, зачем после него писать return?


pro100andrik94 пишет:

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

Если я напишу:


Loop
if 1 > 0 ;1
Tooltip, 1
else ; почему здесь не работает else?
{
    if 2 > 0 ;2
Tooltip, 2 
else
  if 3 > 0 ;3
Tooltip, 3
else
}

то у меня что выполнится? 1 и всё?: А то что в скобках (2,3) как бы блок отдельный и не будет выполнен?

42 (изменено: fgslm, 2020-07-24 20:05:14)

Re: AHK: Внятное пояснение скобок и return к ним

...

43

Re: AHK: Внятное пояснение скобок и return к ним

fgslm пишет:

то у меня что выполнится? 1 и всё?: А то что в скобках (2,3) как бы блок отдельный и не будет выполнен?

Я вам об этом уже писал.

pro100andrik94 пишет:

А это в свою очередь нужно чтобы при использовании команд if или цикла loop выполнялся этот блок (при условии если там больше одной строчки кода, так как если у вас одна строчка то скобки можно не использовать), ибо если не поставить скобок то программа будет работать только с первой строчкой

И там же есть ответ почему не будет работать else и о том что если вам надо проверить 3 и более условий и в каждом чтобы была своя команда, то вам надо использовать else if. В конце статьи пример работы.

44 (изменено: fgslm, 2020-07-24 20:18:40)

Re: AHK: Внятное пояснение скобок и return к ним

pro100andrik94 пишет:

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

Но цикл с условием тоже есть в AHK, и его описание даже есть где-то в справке. Но я почему-то не вижу вообще обширного применения никем этой возможности, толи из-за того что эта функция плохо  работает, толи из-за того что люди пришедшие из других языков где это не используется по привычке в своих скриптах

pro100andrik94 пишет:

то вам надо использовать else if.

Вот я и использую else if но в AHK он спотыкается о наличие/отсутсвие скобок в том или ином месте, а также непонятную работу ретурнов в качестве универсального средства, вот я и пишу эту тему.

45

Re: AHK: Внятное пояснение скобок и return к ним

fgslm пишет:

А return зачем? Вы им завершили ToolTip или что? цикл же закрыт скобкой, зачем после него писать return?

Он там служит точкой остановки, ибо если его не поставить то скрипт будет делать дальше команды до того момента когда не дойдет до return или exit.

46

Re: AHK: Внятное пояснение скобок и return к ним

fgslm пишет:

Вот я и использую else if но в AHK он спотыкается о наличие/отсутсвие скобок в том или ином месте


Вот вам о скобках еще.

47

Re: AHK: Внятное пояснение скобок и return к ним

pro100andrik94 пишет:

скрипт будет делать дальше команды до того момента когда не дойдет до return или exit.

Так ладно, на какие команды он влияет?
loop, while, label, Название функций, Хоткеи клавиш... ? #Зарезервированные команды?

48

Re: AHK: Внятное пояснение скобок и return к ним

fgslm пишет:

Так ладно, на какие команды он влияет?

Кто "он"?

49 (изменено: fgslm, 2020-07-24 20:44:04)

Re: AHK: Внятное пояснение скобок и return к ним

return

else IfEqual, x, 3 ; alternate style

что за альтернативный стиль?
--
Вообще мне было бы удобнее понимать куда уводит ретурн, или что он зевершает, если ему присваивался бы суффикс команды которую он завершает или куда возвращает.
Например:

loop 
{
}
return_loop

while
{
}
return_while

А если мы используем цикл в цикле, то это увеличивает читабельность кода
loop 
{
while
{
;Особенно когда в нём 100+ строк
}
return_while
}
return_loop


Или если он завершает вообще цикл, или как точка остановки.
то пишется
Название функции(){
действия
}
return_end_Название функции
ВСЁ. понятнее некуда бы было.

Но такого синтаксиса не предусмотрено, и приходится бродить в потьмах.

50

Re: AHK: Внятное пояснение скобок и return к ним

Return останавливает выполнение. То есть скрипт не пойдёт выполнять то, что написано на нижеследующей строке.
Но если мы говорим о подпрограмме или о функции, то Return означает конец этой подпрограммы или функции соответственно. И возврат скрипта к той точке, из которой он "прыгнул" в данную подпрограмму или функцию.

51 (изменено: fgslm, 2020-07-24 21:00:27)

Re: AHK: Внятное пояснение скобок и return к ним

ypppu пишет:

из которой он "прыгнул" в данную подпрограмму или функцию.

ААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААА ахаха

Вот именно поэтому я этого и не знал. Если бы был стиль написания ретурнов с суфикстом/префиксом это было бы понятно

While
{
Название функции
}
return_while

Название функции(){
действия
}
return_while
Согласитесь, это совсем другое дело?

Но это не относится к циклам?
Тогда получается в таком примере:

А если мы используем цикл в цикле, то это увеличивает читабельность кода
loop 
{
while
{
;Особенно когда в нём 100+ строк
}
return_while
}
return_loop

первый ретурн приведет к While, а не к loop, хотя скрипт прыгнул в while из loop и туда же должен вернутся?

Еще мощнее было бы давать циклам свои имена.

ypppu пишет:

Return останавливает выполнение. То есть скрипт не пойдёт выполнять то, что написано на нижеследующей строке.

Т.е. в случае с бесконечным циклом, если до него что-то написано, и он завершается ретурном, то скрипт еще один раз выполнит стоящие перед бесконечным циклом строки и снова перейдёт к циклу, опять завершится и опять, прочитав первые строки перед циклом выполнит его и т.д.?
Но почему тогда мне в примерах приводят ошибочность поставновки переменных перед циклом(якобы цикл их не обновит и не увидит), когда каждый раз после команды ретурн в конце скрипт уходит наверх. Или не уходит наверх?


ypppu пишет:

означает

Означает. Но так ли на практике работает? Вот тут многие открытия делают, что команды немного не так как в справке работают.

52

Re: AHK: Внятное пояснение скобок и return к ним

Т.е. в случае с бесконечным циклом, если до него что-то написано, и он завершается ретурном

Не могу себе этого представить. Либо цикл бесконечный, либо он может завершиться. Вообще задайте какой-нибудь один конкретный вопрос, а то какая-то каша получается.

53

Re: AHK: Внятное пояснение скобок и return к ним

https://i.imgur.com/akGP8p3.png
Да что тут непонятного.

Continue возвращает в начало цикла.
Break прекращает цикл, и соответственно выполнение кода идёт ниже цикла.
Return возвращает обратно (если есть куда), или прекращает выполнение потока.
https://i.imgur.com/w8AaO72.png

Exit безусловно прекращает выполнение потока.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v2004, AutoHotkey_L v1.1.33.02 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

54

Re: AHK: Внятное пояснение скобок и return к ним

Ну тут я понимаю медицина бессильна.
Столько ответов и всё равно вопросы одни и те же - 'Что делает этот Return', 'Откуда он выходит и куда'.
Это просто ТОЧКА, точка в любом логической действии, чтобы скрипт перестал считывать строки ниже и не выполнил то, что нам не нужно.

Win10x64, AHK v1.1.30.03

55 (изменено: __Михаил__, 2020-07-24 22:10:07)

Re: AHK: Внятное пояснение скобок и return к ним

При создании чего либо:  горячей клавиши, метки перехода, цикла и т.д. ОБЯЗАТЕЛЬНО нужно сделать ограничение.
Для этого и есть фигурные скобки {} (если есть условия If-Else) и после всего как в знак уважения установить Return (в функциях не нужно).

Win10x64, AHK v1.1.30.03

56

Re: AHK: Внятное пояснение скобок и return к ним

fgslm пишет:

первый ретурн приведет к While, а не к loop, хотя скрипт прыгнул в while из loop и туда же должен вернутся?

Я же вам говорил, Return в циклах не используется, за исключением когда они в функциях.
Вместо ограничения While в виде команды EndWhile, используются скобки.
Если из While надо вернутся в loop, то используется Break.

Если форматировать код, то всё прекрасно видно, что в чём и с кем.
http://screenshot.su/img/6f/45/db/6f45db1620348f7eb58191f7ed0f8cdf.jpg

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v2004, AutoHotkey_L v1.1.33.02 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

57 (изменено: fgslm, 2020-07-24 22:59:56)

Re: AHK: Внятное пояснение скобок и return к ним

serzh82saratov пишет:

Если форматировать код, то всё прекрасно видно, что в чём и с кем.
http://screenshot.su/img/6f/45/db/6f45db1620348f7eb58191f7ed0f8cdf.jpg

Это Sublime? что за плагин?

58

Re: AHK: Внятное пояснение скобок и return к ним

__Михаил__ пишет:

уважения

Если сосредатачиватсья на уважении к инструменту - не достигнешь цели.

59

Re: AHK: Внятное пояснение скобок и return к ним

fgslm пишет:

Sublime

Notepad++

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v2004, AutoHotkey_L v1.1.33.02 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

60

Re: AHK: Внятное пояснение скобок и return к ним

serzh82saratov пишет:
fgslm пишет:

Sublime

Notepad++

А плагин форматирования там есть?

61

Re: AHK: Внятное пояснение скобок и return к ним

Наверное есть, я не искал. Удобнее сразу писать как надо.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v2004, AutoHotkey_L v1.1.33.02 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

62 (изменено: fgslm, 2020-07-24 23:46:24)

Re: AHK: Внятное пояснение скобок и return к ним

pro100andrik94 пишет:
check := 0
Loop
{ 
	a := 1
	if a >  0 
	{
		Send {1}
        sleep 1000
     ;Тут надо чтобы скрипт вернулся к началу и проверял еще раз с начала, а в случае неудачи первого следовал ниже
     ;Но я так уже пробовал, и если ставил тут return скрипт вобще ничего не делал.
    }
    if check > 0 ; после каждого действия проверяеться условие на прерывание цикла
    break
	b := 1
	if b > 0
	{
		Send {2}
        sleep 1000
    ;вернуться и проверить сначала
    }
    if check > 0
    break
    c := 1
	if c > 0
	{
		Send {3}
        sleep 1000
     ;вернуться и проверить сначала
	}

    if check > 0
    break
}

F1::  						;в данном случае служит вместо функции для прерывания цикла
check := 1
Return ;переходит к loop

Это не подразумевается, но я хотел всё же понять: чтобы мне заставить выполнения цикла каждый раз при ВЫПОЛНЕНИИ ПЕРВОГО УСЛОВИЯ ВОЗВРАЩАТЬСЯ К НАЧАЛУ и проверять его еще раз, а в случае его провала проверять следующие, там ретурн надо ставить в конеце действия? Или
else после скобок? Просто ставил по разному - скрипт не хочет вообще ничего проверять.

63

Re: AHK: Внятное пояснение скобок и return к ним

Если не ясна работа циклов в цикле - выход прост до безобразия - вывести второй цикл в виде отдельной метки / функции.
Если в ней что-то и напишете не так - первый цикл хоть не сломается.

Win10x64, AHK v1.1.30.03

64 (изменено: fgslm, 2020-07-25 00:05:45)

Re: AHK: Внятное пояснение скобок и return к ним

__Михаил__ пишет:

в виде отдельной метки / функции.
Если в ней что-то и напишете не так

Это просто для того кто знает все углы и подводные камни синтаксиса - для меня же это лишь усложняет задачу.


2.:
Что здесь не так?

GlobalSuspend(){
toggle := GetKeyState("Capslock", "T")
toggle2 := GetKeyState("Numlock", "T")
toggle3 := GetKeyState("Scrolllock", "T")
loop{
if toggle = 0{
Suspend, On
Pause, On
a := 1
}
if toggle{
Suspend, Off
Pause, Off
a := 0
}
}
}
return

65

Re: AHK: Внятное пояснение скобок и return к ним

Тут не открывающая скобка, а строка "0{".

if toggle = 0{
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v2004, AutoHotkey_L v1.1.33.02 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

66

Re: AHK: Внятное пояснение скобок и return к ним

fgslm пишет:

Это просто для того кто знает все углы и подводные камни синтаксиса - для меня же это лишь усложняет задачу.

Я ещё очень многое сам не знаю, но тех знаний что уже есть, позволяют многие проблемы предвидеть или обойти создав костыль.
Чтение чужого кода, особенно с комментариями - важная часть обучения. В поиске много похожих тем, где можно почерпнуть разные варианты выполнения одного кода.
Синтаксис в АХК для меня оказался довольно лёгок, не нужно писать сложные конструкции с разными предварительными данными для создания всего одной навсего переменной нужного типа / формата / кодировки и прочей ерундой. Ну и дружелюбность с русским языком, что наверно редкость.

Win10x64, AHK v1.1.30.03

67

Re: AHK: Внятное пояснение скобок и return к ним

__Михаил__ пишет:

обойти создав костыль.

Вы же не на один день делаете? Или не для себя? В этом причина бренности нашего бытия - что мы на время, лишь бы было, кое-как, "и так сойдёт".

68

Re: AHK: Внятное пояснение скобок и return к ним

fgslm пишет:

Если сосредатачиватсья на уважении к инструменту - не достигнешь цели.

fgslm пишет:

Вы же не на один день делаете? Или не для себя? В этом причина бренности нашего бытия - что мы на время, лишь бы было, кое-как, "и так сойдёт".

Ну наконец то всё встало на свои места.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v2004, AutoHotkey_L v1.1.33.02 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

69 (изменено: __Михаил__, 2020-07-25 02:19:21)

Re: AHK: Внятное пояснение скобок и return к ним

fgslm

Под 'костыль' я имел в виду код, который я не могу ещё сам осуществить, поэтому пишу его иначе, через простые функции, которые понимаю намного лучше.

Например: Как отправить в окно некое слово или целое предложение быстро?
Я нашёл такой костыль:

F2::
R := ClipboardAll	; Сохранить тек. буфер обмена (как есть).
Clipboard = ABCDEFG	; Отправить текст в буфер.
Send, ^{vk56} 	; Вставить из буфера.
Clipboard := R	; Вернуть буфер.
Return
Win10x64, AHK v1.1.30.03

70 (изменено: fgslm, 2020-07-25 03:17:48)

Re: AHK: Внятное пояснение скобок и return к ним

__Михаил__ пишет:

Под 'костыль' я имел в виду код, который я не могу ещё сам осуществить, поэтому пишу его иначе, через простые функции, которые понимаю намного лучше.

Также думаю гопники в переулке, которые еще не могут заработать где-то денег, но используют "более простые функции", которые они понимают - "отработать мобилу", "спросить: почему такой дерзкий?", "развести на бабки" и прочее. Всё это определяет их бытие. Которое вроде бы сегодня хорошо, но в конечном счёте это замкнутый круг.

__Михаил__ пишет:

Например: Как отправить в окно некое слово или целое предложение быстро?

Например - "Как осуществить залив боярки в себя когда денег нету?" Стрельнуть у прохожих на остановке.
Понимаете о чем я говорю? Быстро не решает проблему - оно помогает от неё убежать.
Я вот не ищу быстрого решения, я ищу то, что поможет комплексно решить проблему в первоисточнике и больше о ней не думать. Потому что, как правило, если мы живём в социуме, наши же решения к нам возвращаются - к кому-то в виде костылей, а кому-то в виде копмлексного решения.

Я несколько делаю разницу, когда человек владеет словом, и слово владеет человеком.

serzh82saratov пишет:

Ну наконец то всё встало на свои места.

Когда я говорю про достижение своих целей при помощи инструмента, я не подразумеваю что это будет быстро или на один раз. Более подразумеваю что будет эффективно, и будет оправдывать применение тех средств которые используются.

71

Re: AHK: Внятное пояснение скобок и return к ним

fgslm

Вроде столько текста, но толку? Решение рабочее - что ещё нужно?
Улучшить можно позже, когда мозги повзрослеют.
Вам незачем лесть выше себя, вы элементарного кода не понимаете но неплохо разбираетесь в других вещах, я полагаю.

Win10x64, AHK v1.1.30.03

72

Re: AHK: Внятное пояснение скобок и return к ним

fgslm, AutoHotkey можно изучать долго. Но этот скриптовый язык хорош тем, что простые задачи можно решить здесь и сейчас, не застревая на чтении всей документации. Вы задаёте вопрос на форуме, Вам подсказывают какие команды лучше применить; находите эти команды в справке, изучаете, разбираете примеры и пишете свой код. AutoHotkey позволяет по ходу работы скрипта контролировать значение переменных, делать паузы, смотреть которая строка кода сейчас выполняется.
Потом уже можете усложнять, ставить перед собой более масштабные задачи.

73 (изменено: fgslm, 2020-07-25 14:27:39)

Re: AHK: Внятное пояснение скобок и return к ним

__Михаил__ пишет:

Решение рабочее - что ещё нужно?

У меня не работает до сих пор)
Вобщем не работает такая консктрукция с ретурнами

check := 0
while 1 == 1
if check > 0 
break
else
{ 
toggle := GetKeyState("Capslock", "T")
if toggle = 0
Suspend
	a := 1
	if a >  0 
	{
		Send {1}
        sleep 0
     return ;куда возвращает этот ретурн
    }
    if check > 0 ; после каждого действия проверяеться условие на прерывание цикла
    break
	b := 1
	if b > 0
	{
		Send {2}
        sleep 0
    return
    }
    if check > 0
    break
    c := 1
	if c > 0
	{
		Send {3}
        sleep 0
     return
	}

    if check > 0
    break
}
return

74

Re: AHK: Внятное пояснение скобок и return к ним

Не знаю, где Вы отыскали Loop без фигурных скобок. Но когда их нет, подразумевается, что в цикл Loop попадает только одна (следующая) строчка.

75

Re: AHK: Внятное пояснение скобок и return к ним

fgslm пишет:

не работает такая консктрукция с ретурнами

Дело было не в ретюрне.

fgslm пишет:

То я так привык - что у каждой открывающей команды, есть закрывающая, в противном случае код для меня становится нечитабельным.

А вы к какому языку привыкли?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v2004, AutoHotkey_L v1.1.33.02 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

76 (изменено: fgslm, 2020-07-25 14:36:14)

Re: AHK: Внятное пояснение скобок и return к ним

ypppu пишет:

что в цикл Loop попадает только одна (следующая) строчка.

Но это не так, и у меня скрипт срабатывает и на следующих заключенных в скобках. Или у меня версия AHK волшебная, или эти законы тут не работают.

serzh82saratov пишет:

Дело было не в ретюрне.

Когда убираю их - всё работает.

По логике

while 1 == 1
if check > 0 
break
else
{ 
toggle := GetKeyState("Capslock", "T")
if toggle = 0
Suspend
	a := 1
	if a >  0 
	{
		Send {1}
        sleep 0
     return ;куда возвращает этот ретурн
    }

ретурн после совпадения условий и выполнения команды должен запускать цикл заново. Но у меня он его просто убивает - наглушняк.

77

Re: AHK: Внятное пояснение скобок и return к ним

fgslm пишет:

всё работает

Так в чём проблема, если всё работает.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v2004, AutoHotkey_L v1.1.33.02 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

78 (изменено: fgslm, 2020-07-25 14:45:49)

Re: AHK: Внятное пояснение скобок и return к ним

serzh82saratov пишет:

А на х64 так вообще запускается без проблем.

Вот и у меня без проблем

79 (изменено: fgslm, 2020-07-25 14:42:10)

Re: AHK: Внятное пояснение скобок и return к ним

serzh82saratov пишет:

Так в чём проблема, если всё работает.

fgslm пишет:

ретурн после совпадения условий и выполнения команды должен запускать цикл заново. Но у меня он его просто убивает - наглушняк.

fgslm пишет:

чтобы мне заставить выполнения цикла каждый раз при ВЫПОЛНЕНИИ ПЕРВОГО УСЛОВИЯ ВОЗВРАЩАТЬСЯ К НАЧАЛУ и проверять его еще раз

...

serzh82saratov пишет:

Кстати любопытно что на этом коде х32 выдаёт ошибку про:

    Error:  Missing "}"

Хотя парность соблюдена, и по идее должно быть:

А как должно выглядеть на х32 для работоспособности?

Где поставить break/continue для работоспособности кода?

80

Re: AHK: Внятное пояснение скобок и return к ним

serzh82saratov пишет:

А на х64 так вообще запускается без проблем.

Нет, и не должно.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

81

Re: AHK: Внятное пояснение скобок и return к ним

Да, это у меня глюканул запуск выделенного.
И ненаглядность "склейки кода" if else.

fgslm пишет:

А как должно выглядеть на х32 для работоспособности?

Всё норм.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v2004, AutoHotkey_L v1.1.33.02 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

82

Re: AHK: Внятное пояснение скобок и return к ним

fgslm пишет:

ВОЗВРАЩАТЬСЯ К НАЧАЛУ и проверять его еще раз

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

Вам сто раз написано разжёвано и нарисовано даже, для возврата в начало цикла - continue, return в цикле не используется.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v2004, AutoHotkey_L v1.1.33.02 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

83 (изменено: fgslm, 2020-07-25 15:01:53)

Re: AHK: Внятное пояснение скобок и return к ним

serzh82saratov пишет:

Вам сто раз написано разжёвано и нарисовано даже, для возврата в начало цикла - continue, return в цикле не используется.

Скрипт стал тормозить секунд на 5 после выполнения любой из команд. continue куду-то не туда уводит
Теперь лампочка капса мигает как шальная - я боюсь у меня диод перегорит через несколько часво работы скрипта.

84

Re: AHK: Внятное пояснение скобок и return к ним

Какой скрипт.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v2004, AutoHotkey_L v1.1.33.02 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

85

Re: AHK: Внятное пояснение скобок и return к ним

serzh82saratov пишет:

Какой скрипт.

Всё тот же

check := 0
while 1 == 1
if check > 0 
break
else
{ 
toggle := GetKeyState("Capslock", "T") ; проверка включенности очень сильно напрягает диод клавиши, но на паузу скрипт так и не становится.
if toggle = 0
Suspend
	a := 1
	if a >  0 
	{
		Send {1}
        sleep 0
    continue
    }
    if check > 0 
    break
	b := 1
	if b > 0
	{
		Send {2}
        sleep 0
    continue
    }
    if check > 0
    break
    c := 1
	if c > 0
	{
		Send {3}
        sleep 0
     continue
	}

    if check > 0
    break
}
return

86

Re: AHK: Внятное пояснение скобок и return к ним

Хватит разжёвывать, пора послать читать справку. https://i.smiles2k.net/computer_smiles/RTFM.gif

87

Re: AHK: Внятное пояснение скобок и return к ним

Всё работает, бешено вводит "1", Capslock не моргает.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v2004, AutoHotkey_L v1.1.33.02 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

88

Re: AHK: Внятное пояснение скобок и return к ним

ypppu пишет:

послать читать справку.

И закрывать форум. Потому что толку от тонн текста в справке, если ты не можешь найти в нем подходящее решение - 0.

89

Re: AHK: Внятное пояснение скобок и return к ним

ypppu
Так посылали уже, а он не идёт...
Дело в том что с синтаксисом вроде решили, код стал рабочим, а вот что от этого кода нужно ТС... тут никакая справка не поможет.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v2004, AutoHotkey_L v1.1.33.02 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

90

Re: AHK: Внятное пояснение скобок и return к ним

ypppu пишет:

Не знаю, где Вы отыскали Loop без фигурных скобок. Но когда их нет, подразумевается, что в цикл Loop попадает только одна (следующая) строчка.

Тут я тоже написал про ошибку, но как оказалось тут мы не правы, синтаксис был верным.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v2004, AutoHotkey_L v1.1.33.02 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

91 (изменено: fgslm, 2020-07-25 15:27:32)

Re: AHK: Внятное пояснение скобок и return к ним

serzh82saratov пишет:

Всё работает, бешено вводит "1", Capslock не моргает.

Микроморгания еле заметные глазу отличные от статичного включения, может от драйверов зависит, но как я вижу от скрипта идёт слишком частое обращение непосредственно
попробуйте такой

check := 0
while 1 == 1
if check > 0
break
else
{
toggle := GetKeyState("Capslock", "T") ; проверка включенности очень сильно напрягает диод клавиши, но на паузу скрипт так и не становится.
if toggle = 0
Pause
else
{
Pause off
toggle := GetKeyState("Capslock", "T")
if toggle = 0
break
a := 0
if a >  0
{
Send {1}
        sleep 0
    continue
    }
    if check > 0
    break
b := 1
if b > 0
{
Send {2}
        sleep 0
    continue
    }
    if check > 0
    break
    c := 1
if c > 0
{
Send {3}
        sleep 0
     continue
}

    if check > 0
    break
}
}
return

можете попробовать включить/выключить капслок во время выполнения, и так чтобы он поставился на паузу? При включении видно как скрипт замирает на несколько секунд

92

Re: AHK: Внятное пояснение скобок и return к ним

В цикле надо использовать задержку, sleep 10 после GetKeyState, Send {1} отпускает Capslock , надо SendInput.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v2004, AutoHotkey_L v1.1.33.02 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

93 (изменено: fgslm, 2020-07-25 15:45:57)

Re: AHK: Внятное пояснение скобок и return к ним

serzh82saratov пишет:

В цикле надо использовать задержку, sleep 10 после GetKeyState, Send {1} отпускает Capslock , надо SendInput.

Так. вроде помягче стало.

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

Как теперь снять с паузы? Проверку включенности капслока вне цикла. Если ставить "перед" - скрипт его уже не читает

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

Пфф Окей

~Capslock::
Pause off
return

Так заработало!, отбой.

А не - не отбой. Включение капс-лока не возобновляет работу цикла...

94

Re: AHK: Внятное пояснение скобок и return к ним

123

95

Re: AHK: Внятное пояснение скобок и return к ним

Как заставить из этого, расположенного под циклом

~Capslock::
Pause off
return

Переходить обратно в цикл?

96

Re: AHK: Внятное пояснение скобок и return к ним

fgslm пишет:

Проверку включенности капслока вне цикла

Зачем вне цикла.
Надо Pause на continue заменить.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v2004, AutoHotkey_L v1.1.33.02 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

97

Re: AHK: Внятное пояснение скобок и return к ним

И sleep 10 перед GetKeyState.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v2004, AutoHotkey_L v1.1.33.02 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

98

Re: AHK: Внятное пояснение скобок и return к ним

serzh82saratov пишет:

Надо Pause на continue заменить.

serzh82saratov пишет:

И sleep 10 перед GetKeyState.

Так лучше. Но предвижу проблемы, как в будущем мне нужно будет по ключам цикл прерывать и сами ключи наужно будет ставить на паузу, её всё же придётся где-то использовать.

99 (изменено: teadrinker, 2020-07-25 16:18:07)

Re: AHK: Внятное пояснение скобок и return к ним

Если нужно переключение по CapsLock, пауза вообще не нужна.

CapsLock::
   if t := !t
      SetTimer, Cycle, -1
   Return
   
Cycle:
   while t {
      Send, 1
      Sleep, 1
   }
   Return
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

100 (изменено: fgslm, 2020-07-25 16:27:29)

Re: AHK: Внятное пояснение скобок и return к ним

teadrinker пишет:

Если нужно переключение по CapsLock, пауза вообще не нужна.

CapsLock::
   if t := !t ; Если t = не t?
      SetTimer, Cycle, -1 ;установить таймер для цикла, -1(бесконечный)
   Return ;остановить команду if
   
Cycle: ;Цикл. Это метка или что?
   while t {  ; Выполнять пока t = true
      Send, 1  
      Sleep, 1  
   }
   Return ;окончание цикла

Расшифровку бы еще
--- UPD ---
Капслок перестал работать вообще.