View previous topic :: View next topic |
Author |
Message |
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Jun 06, 2020 23:45 Post subject: |
|
|
Loopback
А, ну ОК, тогда я спокоен. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1316
|
(Separately) Posted: Mon Jun 08, 2020 00:22 Post subject: |
|
|
Версия 2.2.3 beta
+ добавлены сообщения об ошибках синтаксиса в циклах
- исправлено сообщение, когда отсутствует Then в условнии
+ Tab может использоваться аналогично пробелу в выражениях
+ дополнительная проверка ошибок синтаксиса в выражениях
+ добавлена директива LegacyExpressions
+ добавлено сообщение при попытке добавить функцию с дублирующимся именем
- при разбиении строк пробел перед _ не будет удаляться
- исправлена передача параметра по ссылке
- исправлена проблема с остановкой парсера на неподдерживаемых символах
- исправлен парсинг задания переменных без начального значения
- исправлен запрет на присвоение значений макросам и константам
- исправлена ошибка парсера с ключевыми словами or, and, not в условиях
- Tweaks: исправлена работа с модификаторами (снова, и снова, и снова)
Крупных изменений нет, в основном фиксы и оптимизации. Обсуждаемая ранее директива реализована и действует. Страница бета-функционала дополнена.
По поводу ControlSetMouseAction - менять что-то нет смысла, в ФЗ она и будет записываться, как в этом посте, за исключением того, что в "новом" режиме имя команды ShellExec также должно быть в кавычках (т.к. это обычная строка, один из параметров ControlSetMouseAction).
Но с этой командой без исключений никак, есть один момент: трюк, когда при запуске команды выполняется вычисляемая строка в ее параметрах, в функциональной записи невозможен (и неважно в каком режиме). Т.е. если в командной записи
Code: |
ControlSetMouseAction /R /H:64 0 CommandExec em_Lang %"IniRead('~/R', %COMMANDER_INI%, Configuration, LanguageIni)" |
при каждом запуске CommandExec выполняется вычисляемая строка с IniRead, то в функциональном режиме она выполнится только один раз при запуске ControlSetMouseAction. Но вообще-то такое поведение в командной записи ControlSetMouseAction и не предполагалось, по сути это баг
Нужного эффекта можно достигнуть через пользовательскую функцию-прослойку, но по-моему, если нужен именно этот результат, проще записать команду в командном виде. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Mon Jun 08, 2020 01:07 Post subject: |
|
|
Loopback wrote: | если нужен именно этот результат, проще записать команду в командном виде. | Виде? Без смены режима? Это как?
У LegacyExpressions свитч-то есть? Ты же обещал 2 прагмы. Иначе смысл? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1316
|
(Separately) Posted: Mon Jun 08, 2020 02:14 Post subject: |
|
|
Ну записи. В общем, как в приведенном примере.
Flasher wrote: | У LegacyExpressions свитч-то есть? Ты же обещал 2 прагмы. Иначе смысл? |
Две-то зачем? Нет прагмы - новый режим, есть - старый.
Code: |
Pragma LegacyExpressions
|
|
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Mon Jun 08, 2020 02:30 Post subject: |
|
|
Loopback wrote: | В общем, как в приведенном примере. | Так без LegacyExpressions он не работает.
Loopback wrote: | Две-то зачем? | Как это зачем? Сперва пишу в LegacyExpressions, а потом отключаю и пишу в умолчательном, что избежать проблем старого режима. В этом и суть. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1316
|
(Separately) Posted: Mon Jun 08, 2020 03:02 Post subject: |
|
|
Flasher wrote: | Так без LegacyExpressions он не работает. |
Естественно, Configuration и LanguageIni без кавычек. Если включить LegacyExpressions - будет работать.
Flasher wrote: | Как это зачем? Сперва пишу в LegacyExpressions, а потом отключаю и пишу в умолчательном, что избежать проблем старого режима. В этом и суть. |
Ничего не понял Зачем что-то писать в режиме LegacyExpressions, если всё что у тебя есть - и так в нём написано?
Если есть желание исправлять старый код под новую версию - без LegacyExpressions исправляешь, не хочешь - включаешь LegacyExpressions - и все работает как в прошлой релизной версии. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Mon Jun 08, 2020 03:54 Post subject: |
|
|
Loopback wrote: | Естественно | Я спросил "Без смены режима?", ты ответил "Ну записи.".
Loopback wrote: | Ничего не понял Зачем что-то писать в режиме LegacyExpressions, если всё что у тебя есть - и так в нём написано? | Я тем более. Как это зачем? Если всё в нём написано, то логично в нём и писать. А если после надо какую-то часть написать в ФЗ (например, для указания переменных без %), то логично переключиться обратно. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1316
|
(Separately) Posted: Mon Jun 08, 2020 11:04 Post subject: |
|
|
Flasher wrote: | А если после надо какую-то часть написать в ФЗ |
Ты вроде тут писал, что стало понятно.
ФЗ - она при любой прагме ФЗ. Я же в обновленной справке в разделе "Синтаксис" разжевал всё подробно: прагма управляет интерпретацией ФЗ. По умолчанию включена правильная, которая исключает неоднозначности и обеспечивает корректную обработку ошибок, но можно переключиться на старую, если сложно/лень/нет времени вносить изменения в свой имеющийся код. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Mon Jun 08, 2020 11:08 Post subject: |
|
|
Loopback wrote: | Ты вроде тут писал, что стало понятно. | Что и как будет работать в каждом из режимов — да, стало понятно. Но я не хотел и не предполагал, что один из режимов будет выбит наглухо...
Тем более, что сам пишешь, что есть не только функциональная разница, но и отладочная. И тут дело не в лени вовсе. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1316
|
(Separately) Posted: Tue Jun 09, 2020 12:57 Post subject: |
|
|
У меня возникает стойкое ощущение, что иногда мы мыслим в противофазе. Полное отсутствие взаимопонимания.
В общем своё понимание я подробно документировал. Что куда и почему "выбито", откуда вообще взялось ожидание каких-то двух прагм и для чего они две нужны - мне так и осталось непонятным. Лучше я объяснить уже не смогу, так что я - пас. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Tue Jun 09, 2020 19:02 Post subject: |
|
|
При чём тут взаимопонимание? Я твой ликбез в целом прекрасно понял. Да и ты мой нужник наверняка тоже. А вот отсутствие желания с твоей стороны и только, это уже совсем другой разговор.
Почему "выбито" толком объяснено не было. Была только констатация текущего положения. Любая прагма работает с места, а не по всему коду, если не задана первой строкой. То есть имеем потенциал разделения на две части. С остальными прагмами понятно, там переключатель бессмысленен. А почему тут нет доступа к переключателю для возврата к синтаксису, который как минимум "имеет корректную обработку ошибок", так однозначного (хотя бы что-то типа "это очень трудоёмко, по такой-то причине надо много переписывать", "замедлится скорость" и т. п.) пояснения и не было. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1316
|
(Separately) Posted: Tue Jun 09, 2020 20:13 Post subject: |
|
|
Flasher wrote: | Да и ты мой нужник наверняка тоже. |
И нафига бы это мне? Слишком много лишнего времени, что захотелось поразвлекаться перепиской на несколько страниц?
Flasher wrote: | Любая прагма работает с места, а не по всему коду |
Ну наконец хоть что-то стало проясняться. Вот это была большая ошибка так думать. До сих пор единственная прагма, работающая в конкретном месте - это была FinalizeSection. Теперь добавилась Include, вставляющая по этому месту содержимое файла. Всё. Остальные прагмы - глобальные, и размещать их можно не в первых строках, а где угодно.
Резюме: это на самом деле трудоемко. Потому что прагмы читаются на этапе препроцессинга. И если с Include проблем нет (всё что нужно реализуется на этапе препроцессинга), то даже под FinalizeSection пришлось городить специальную обработку (если бы не совместимость, сейчас я бы лучше сделал специальную функцию "OnExit"). В парсер выражений сейчас передается единственный глобальный флаг. А чтобы реализовать включение/выключение по месту, придется сначала как-то сохранить с препроцессинга и проставить флаги в каждый узел дерева скрипта, учитывая вложенности, потом их проверять при выполнении.
Не то чтобы это было невозможно, но есть вопрос целесообразности. Были бы скрипты длиной в тысячи строк, об этом еще можно было бы говорить. А так в среднестатистическом скрипте всё исправить - дело от силы десятка-другого минут. И это не говоря о том, что само наличие каких-то сегментов, в которых один и тот же код выполняется по-разному, явно всё только усложнит. И ладно бы каждый из этих режимов давал какой-то уникальный профит, а так один раз перешел и забыл. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Tue Jun 09, 2020 21:02 Post subject: |
|
|
Loopback wrote: | И нафига бы это мне? Слишком много лишнего времени, что захотелось поразвлекаться перепиской на несколько страниц? | Мы после выкладки беты даже до второй не дошли, а ты уже несколько насчитал. Нафига тебе понимать мою нужду? Хороший вопрос, но не ко мне он, не телепат я. )
Loopback wrote: | Вот это была большая ошибка так думать. До сих пор единственная прагма, работающая в конкретном месте - это была FinalizeSection. | У тебя очень интересно в описании:
Quote: | Директивы выполняются на этапе предварительной обработки скрипта, результат их обработки действует на протяжении всего времени выполнения скрипта. | И тут же следующей строкой: Quote: | Часть скрипта после этой директивы обрабатывается при завершении Total Commander. | Такие противоречия заставляют задуматься, что там да как на самом деле.
Loopback wrote: | если бы не совместимость, сейчас я бы лучше сделал специальную функцию "OnExit" | Совместимость уже поломалась в синтаксисе, поэтому можно делать не глядя.
По остальному ясно-понятно, вопросов больше не имею... _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1316
|
(Separately) Posted: Tue Jun 09, 2020 23:04 Post subject: |
|
|
Flasher wrote: | Нафига тебе понимать мою нужду? Хороший вопрос, но не ко мне он, не телепат я. ) |
Мда, двусмысленно вышло. Надо было полностью цитировать.
Flasher wrote: | Такие противоречия заставляют задуматься, что там да как на самом деле. |
Доработаю. Но как раз это и должно было наводить на мысль, что не всё однозначно.
Flasher wrote: | Совместимость уже поломалась в синтаксисе, поэтому можно делать не глядя. |
Прям таки и поломалось, не нужно преувеличивать масштабы проблемы. Когда переход с дельфи 7 был на новые версии, все ansi-зависимые типы данных были по умолчанию заменены на юникодные, вот это - поломалось. А тут только прагму включить и всё. Ну почти, командный синтаксис в условиях все равно нельзя было дальше тянуть.
Функцию теперь нет смысла делать, раз уж секция осталась. |
|
Back to top |
|
|
dueus_minor
Joined: 16 Sep 2020 Posts: 4
|
(Separately) Posted: Wed Sep 16, 2020 13:01 Post subject: Имя переменной |
|
|
Здравствуйте!
Возник вопрос следующего характера:
В Wind'е есть переменная среды вида "ProgramFiles(x86)". Ясно, что она неоднозначна для разных битностей ОС и самого ТС, ну, т.е. она может быть (в Win_х64), а может и не быть (в Win_x32).
Вопрос - возможно ли реализовать в плагине создание переменной с именем, содержащим скобки "()"?
З.Ы.: я знаю, что такое можно реализовать через .cmd(.bat), знаю, что есть и другие переменные, вопрос именно реализации через плагин Autorun.
З.Ы.2.: да, добавлю, что речь идёт про переменную среды в рамках процесса ТС. Т.е. добавление в реестр (утилита setx.exe и иже с ней) пользователя не задуман. |
|
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
|