Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Single Post  Topic: Autorun 
Author Message
Loopback



PostPosted: Fri Jun 05, 2020 15:26    Post subject: Reply with quote

Flasher wrote:
Частица "не" не пропущена?

Пропущена.
Flasher wrote:
Ну делай так, только оставь текущий вариант умолчательным.

Вот это вопрос спорный. Если оставить как есть, то маловероятно, что кто-то (кроме новых пользователей) вообще узнает про более оптимальный вариант. В то время как из всех исправлений может понадобиться изменить несколько неокавыченных строк в условиях. Кому лень это делать - включает прагму.

Не вижу ничего смертельного в некоторых "breaking changes" при переходе на новую мажорную версию. Когда-то это надо делать, иначе хвост неоптимального кода и ошибочных решений так и будет тянуться вечно. К тому же уже сейчас есть четыре изменения, которые могут повлечь неработоспособность старого скрипта, самое критичное - условие старого типа для FileExist/ProcessExist, которого больше нет. Добавится еще одно.

В Autoit такие изменения были регулярно. Одно время в нем очень долго был баг, который позволял вставить разрыв внутри текстовой строки. Когда его исправили, многим пришлось переписывать скрипты, многие возмущались, но это же не повод, чтобы оставить баг неисправленным. До сих пор в Autoit есть опция ExpandEnvStrings, которую ввели где-то в самом начале 3-ей версии и которой уже лет 15 никто не пользуется, а что если бы она была включена по умолчанию?

Ну можно и какой-нибудь AutorunX или Neo сделать, чтобы оправдать критические изменения, но будет ли в этом большой смысл, если старая версия не будет обновляться?

Flasher wrote:
Ох, как всё сложно...

Да не сложно, тут просто сама команда атипичная. В общем подумал, чтобы было понятнее и чтобы естественно ложилось в функциональный синтаксис, надо просто считать, что параметры запускаемой команды/функции - это параметры ControlSetMouseAction, предназначенные для последующей передачи в функцию, имя которой задано перед этими параметрами (да по сути оно и сейчас так и есть). Тогда не будет причины смешивать типы синтаксиса и пытаться воткнуть туда елочку из if-ов или еще что-то непредусмотренное:

Code:

Только так
ControlSetMouseAction ... SendCommand 123
Или так
ControlSetMouseAction( ... , SendCommand, 123)


Flasher wrote:
тоже переменные в ряде случае можно не объявлять

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

Суть поведения в VBS понятна, но все равно, с точки зрения возможных ошибок, кажется это не совсем правильным. Интересно, кроме VBS есть еще языки, где такое разрешено?
Flasher wrote:
Не понимаю, о чём ты. Ты меня по ним сам консультировал.

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

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

Проверил на последних проблемных вариантах, везде работает, но я уже опасаюсь что-то говорить Smile

Обновил по той же ссылке.
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group