View previous topic :: View next topic |
Author |
Message |
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Jun 06, 2020 01:26 Post subject: |
|
|
Loopback wrote: | Тут, раздел Объявление переменных. | Понятно. Без обоснования только.
Loopback wrote: | Ну давай подведем краткое резюме. | В справке, надеюсь, это всё отражено будет. Добавил пока пост в закладки, чтобы сперва сюда при ошибках смотреть.
А теперь вопрос. Сейчас у нас не КЗ/ФЗ, а КЗ+ФЗ? Или как? На КЗ новинки (функции, циклы и т. д.) заведуться или надо между прагмами переключаться? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
yozhik
Joined: 04 May 2014 Posts: 181
|
(Separately) Posted: Sat Jun 06, 2020 01:32 Post subject: |
|
|
Loopback wrote: | Только так
ControlSetMouseAction ... SendCommand 123
Или так
ControlSetMouseAction( ... , SendCommand, 123) |
Code: | ControlSetMouseAction /L /K:C /K:S /B:3 17 SendCommand 1004 |
Работает.
Code: | ControlSetMouseAction(/L, /K:C, /K:S, /B:3, 17, SendCommand, 1004) |
«Left value conversion error: / L» при запуске ТС.
ЧЯДНТ? |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Jun 06, 2020 01:51 Post subject: |
|
|
yozhik
Объединённые в один параметр ключи с тильдой спереди в апострофы/кавычки надо заключить. См. справку. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
yozhik
Joined: 04 May 2014 Posts: 181
|
(Separately) Posted: Sat Jun 06, 2020 02:35 Post subject: |
|
|
Flasher
Спасибо, с этим разобрался. А вот из такой КЗ (сама эта строка — рабочая):
Code: | ControlSetMouseAction /R /K:A /B:1 17 ShellExec %AUTOIT% "%COMMANDER_PATH%\Profile\scripts\FButtonHint.au3 /f3" |
у меня никак не получается сделать рабочую ФЗ. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Jun 06, 2020 02:40 Post subject: |
|
|
yozhik
Ну а ФЗ-вариант-то где? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
yozhik
Joined: 04 May 2014 Posts: 181
|
(Separately) Posted: Sat Jun 06, 2020 02:47 Post subject: |
|
|
Flasher
А, нет, пардон , вот эта заработала:
Code: | ControlSetMouseAction('~/R /K:A /B:1 17', ShellExec, %AUTOIT%, "%COMMANDER_PATH%\Profile\scripts\FButtonHint.au3 /f3") |
|
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1294
|
(Separately) Posted: Sat Jun 06, 2020 14:05 Post subject: |
|
|
Flasher wrote: | В справке, надеюсь, это всё отражено будет. |
Конечно, будет отдельный раздел по синтаксису. Иначе не разберешься. Пожалуй, всё описанное здесь можно уже сейчас на бета-страницу перенести.
Flasher wrote: | Сейчас у нас не КЗ/ФЗ, а КЗ+ФЗ? Или как? На КЗ новинки (функции, циклы и т. д.) заведуться или надо между прагмами переключаться? |
Да, КЗ+ФЗ. Просто надо понимать, что уточнение "командная запись", равно как и "функциональная запись" относится не к скрипту в целом, а только к методу записи отдельных команд/функций. Иными словами, в КЗ может быть записан только вызов команды или функции. Выражения всегда записываются только в ФЗ, если в выражении используется функция, она тоже записывается в ФЗ, по другому просто невозможно. Поэтому говоря о выражениях, можно даже не упоминать, в какой они записи - это всегда ФЗ. То же самое объявление переменной и присваивание - это всегда ФЗ.
Вычисляемая строка - в некотором роде костыль, чтобы дать возможность в параметре команды в КЗ использовать выражения в ФЗ.
Вполне очевидно, что все новинки так или иначе работают с выражениями в ФЗ. Была попытка скрестить ужа с ежом, в виде функций в командной записи FileExist/ProcessExist в условиях, но она, что очевидно, провалилась. Но это не отменяет возможности по прежнему записывать команды в КЗ внутри блоков условий, циклов и пользовательских функций:
Code: |
If a = 0 then -- ФЗ (выражение a = 0)
MsgBox %a% -- КЗ (команда)
MsgBox(a) -- ФЗ (команда)
b = a + 1 -- ФЗ (присваивание)
endif
MyFunc 123 456 -- КЗ (функция)
MyFunc(123, 456) -- ФЗ (функция)
Func MyFunc(a, b = 1) -- ФЗ (объявление функции)
Local c = 1 -- ФЗ (объявление переменной)
MsgBox %a% -- КЗ (команда)
MsgBox(a) -- ФЗ (команда)
EndFunc
|
Так что переключаться между прагмами не нужно, скрипт в целом будет работать при любой. Прагма будет только переключать два режима работы парсера выражений:
1. Старый - строки могут быть в кавычках (любых из двух типов), либо без кавычек, переменные только в %%. В случае отсутствия переменной возвращается само имя переменной (можно и пустую строку возвращать, но это "потеря совместимости"). Ошибок не выдавалось. Есть неопределенности при работе со строками.
2. Новый - строки в кавычках (любых из двух типов), переменные в выражениях могут быть либо в %%, либо без них (предпочтительнее без, чтобы было лучше видно отличие от КЗ, где %% обязательны). При отсутствии переменной выдается ошибка. Неопределенностей нет.
Вот пример с особенностями (возможно что-то упустил):
Code: |
1: Старый
a = zxc -- ок
с = %a% -- ок, присвоит значение a
с = a -- ок, присвоит строку "a"
a = "zxc asd" -- ок
a = zxc asd -- некорректная запись, вернет "zxcasd" без пробела
b = StrLen(qwerty) -- ок
b = StrLen("qwerty") -- ок
b = StrLen(%a%) -- ок
b = StrLen(a) -- ок, вернет "1", длину строки "a"
b = StrLen("qwerty asdf") -- кавычки все равно обязательны, т.к. пробел
b = StrLen("qw(er)ty,asdf") -- кавычки все равно обязательны, т.к. в строке есть разделители ",()"
b = StrLen(%a% & qwerty) -- ок
2: Новый
a = "zxc" -- ок
с = %a% -- ок, присвоит значение a
с = a -- ок, присвоит значение a
b = StrLen("qwerty") -- ок
b = StrLen(%a%) -- ок
b = StrLen(a) -- ок
b = StrLen(a & "qwerty") -- ок
|
|
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Jun 06, 2020 19:10 Post subject: |
|
|
Loopback
Спасибо за подробности, стало куда более понятно.
Loopback wrote: | в командной записи FileExist/ProcessExist в условиях, но она, что очевидно, провалилась. ... (возможно что-то упустил) | Вот это упустил. Как с этим будет в каждом режиме? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1294
|
(Separately) Posted: Sat Jun 06, 2020 21:23 Post subject: |
|
|
Flasher wrote: | Вот это упустил. Как с этим будет в каждом режиме? |
Так же, как с любыми другими командами. Но в условиях запись только в ФЗ, "if FileExist name then" убрана, я об этом писал еще в посте с самой первой бетой. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Jun 06, 2020 21:35 Post subject: |
|
|
Loopback wrote: | Но в условиях запись только в ФЗ | В формате или режиме? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1294
|
(Separately) Posted: Sat Jun 06, 2020 21:59 Post subject: |
|
|
Flasher wrote: | В формате или режиме? |
Вроде как ФЗ везде используется в контексте формата записи. Причем тут какой-то режим? |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Jun 06, 2020 22:02 Post subject: |
|
|
Loopback
Так мы говорим не про то, как сейчас (КЗ+ФЗ), а как будет (КЗ/ФЗ) с прагмами, то бишь без скрещивания ужа с ежом. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1294
|
(Separately) Posted: Sat Jun 06, 2020 22:32 Post subject: |
|
|
Flasher wrote: | Так мы говорим не про то, как сейчас (КЗ+ФЗ), а как будет (КЗ/ФЗ) с прагмами |
А как будет? Будет точно так же, КЗ+ФЗ. Командный синтаксис никуда не денется. Прагма влияет исключительно на интерпретацию ФЗ.
Я уже вообще перестал понимать, то тут еще непонятно. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Jun 06, 2020 23:18 Post subject: |
|
|
Loopback wrote: | Будет точно так же, КЗ+ФЗ. | Т. е. как и сейчас, с любой из прагм? Code: | If Not ProcessExist('~/F', '...') Then | Так? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1294
|
(Separately) Posted: Sat Jun 06, 2020 23:41 Post subject: |
|
|
Flasher
Всё верно. |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|