Autorun
Select messages from
# through # FAQ
[/[Print]\]
Goto page Previous  1, 2, 3 ... 114, 115, 116 ... 130, 131, 132  Next  :| |:
Total Commander -> Плагины Total Commander

#1711:  Author: FlasherLocation: Москва PostPosted: Sat Jun 06, 2020 01:26
    —
Loopback wrote:
Тут, раздел Объявление переменных.
Понятно. Без обоснования только.

Loopback wrote:
Ну давай подведем краткое резюме.
В справке, надеюсь, это всё отражено будет. Добавил пока пост в закладки, чтобы сперва сюда при ошибках смотреть.
А теперь вопрос. Сейчас у нас не КЗ/ФЗ, а КЗ+ФЗ? Или как? На КЗ новинки (функции, циклы и т. д.) заведуться или надо между прагмами переключаться?

#1712:  Author: yozhik PostPosted: Sat Jun 06, 2020 01:32
    —
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» при запуске ТС.
ЧЯДНТ?

#1713:  Author: FlasherLocation: Москва PostPosted: Sat Jun 06, 2020 01:51
    —
yozhik
Объединённые в один параметр ключи с тильдой спереди в апострофы/кавычки надо заключить. См. справку.

#1714:  Author: yozhik PostPosted: Sat Jun 06, 2020 02:35
    —
Flasher
Спасибо, с этим разобрался. А вот из такой КЗ (сама эта строка — рабочая):
Code:
ControlSetMouseAction /R /K:A /B:1 17 ShellExec %AUTOIT% "%COMMANDER_PATH%\Profile\scripts\FButtonHint.au3 /f3"

у меня никак не получается сделать рабочую ФЗ.

#1715:  Author: FlasherLocation: Москва PostPosted: Sat Jun 06, 2020 02:40
    —
yozhik
Ну а ФЗ-вариант-то где?

#1716:  Author: yozhik PostPosted: Sat Jun 06, 2020 02:47
    —
Flasher
А, нет, пардон Embarassed , вот эта заработала:
Code:
ControlSetMouseAction('~/R /K:A /B:1 17', ShellExec, %AUTOIT%, "%COMMANDER_PATH%\Profile\scripts\FButtonHint.au3 /f3")

#1717:  Author: Loopback PostPosted: Sat Jun 06, 2020 14:05
    —
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") -- ок

#1718:  Author: FlasherLocation: Москва PostPosted: Sat Jun 06, 2020 19:10
    —
Loopback
Спасибо за подробности, стало куда более понятно.

Loopback wrote:
в командной записи FileExist/ProcessExist в условиях, но она, что очевидно, провалилась. ... (возможно что-то упустил)
Вот это упустил. Как с этим будет в каждом режиме?

#1719:  Author: Loopback PostPosted: Sat Jun 06, 2020 21:23
    —
Flasher wrote:
Вот это упустил. Как с этим будет в каждом режиме?

Так же, как с любыми другими командами. Но в условиях запись только в ФЗ, "if FileExist name then" убрана, я об этом писал еще в посте с самой первой бетой.

#1720:  Author: FlasherLocation: Москва PostPosted: Sat Jun 06, 2020 21:35
    —
Loopback wrote:
Но в условиях запись только в ФЗ
В формате или режиме?

#1721:  Author: Loopback PostPosted: Sat Jun 06, 2020 21:59
    —
Flasher wrote:
В формате или режиме?

Вроде как ФЗ везде используется в контексте формата записи. Причем тут какой-то режим?

#1722:  Author: FlasherLocation: Москва PostPosted: Sat Jun 06, 2020 22:02
    —
Loopback
Так мы говорим не про то, как сейчас (КЗ+ФЗ), а как будет (КЗ/ФЗ) с прагмами, то бишь без скрещивания ужа с ежом.

#1723:  Author: Loopback PostPosted: Sat Jun 06, 2020 22:32
    —
Flasher wrote:
Так мы говорим не про то, как сейчас (КЗ+ФЗ), а как будет (КЗ/ФЗ) с прагмами

А как будет? Будет точно так же, КЗ+ФЗ. Командный синтаксис никуда не денется. Прагма влияет исключительно на интерпретацию ФЗ.

Я уже вообще перестал понимать, то тут еще непонятно.

#1724:  Author: FlasherLocation: Москва PostPosted: Sat Jun 06, 2020 23:18
    —
Loopback wrote:
Будет точно так же, КЗ+ФЗ.
Т. е. как и сейчас, с любой из прагм?
Code:
If Not ProcessExist('~/F', '...') Then
Так?

#1725:  Author: Loopback PostPosted: Sat Jun 06, 2020 23:41
    —
Flasher
Всё верно.



Total Commander -> Плагины Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Goto page Previous  1, 2, 3 ... 114, 115, 116 ... 130, 131, 132  Next  :| |:
Page 115 of 132

Powered by phpBB © 2001, 2005 phpBB Group