Autorun

Обсуждение только плагинов и утилит для Total Commander.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Да, верхний нужен не всем, как и нижний. Но какой смысл делать избыточную операцию, когда она может быть сделана только теми, кому она нужна?
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

В компилированном виде это займёт ещё меньше, чем в текстовом файле и отработает быстрее.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Flasher писал(а):Так, хорошо, а если пробелы между переменными и текстом есть?
Добавляй, что мешает-то?
Flasher писал(а):Этого я не писал. Тем более про функции.
http://forum.wincmd.ru/viewpost.php?p=98902
Не про функции, про команды. Сути-то не меняет.
Flasher писал(а):В этом никто не сомневался. Речь только может идти про новый.
Угу, т.е. я сейчас начну переписывать с нуля парсер, только чтобы сделать красиво строчные функции? Здорово придумано :D

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


ЗЫ К слову, плагины к Autorun сейчас написаны на С++. Было интересно вспомнить, да и API надо было портировать. И что, кроме размера, заметил кто какие преимущества? :wink:
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Loopback писал(а):Добавляй, что мешает-то?
Пробел выполняет фунцию сепаратора в синтаксисе. Им отделяются ключи, имена переменных, имена секций и т..д. Синтаксис глаголит последовательность расположения данных. Плагин разве не споткнётся на любом подобном пробеле? Или там кавычки решают?
Loopback писал(а):Не про функции, про команды. Сути-то не меняет
Меняет. Я написал про некоторые новые команды, а ты про неизвестно какие переменные.
Loopback писал(а):Угу, т.е. я сейчас начну переписывать с нуля парсер
Под новым понимался дополнительный, а не изменённый существующий.
Loopback писал(а):И что, кроме размера, заметил кто какие преимущества?
Чего перед чем?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Flasher писал(а):Или там кавычки решают?
Решают. Можно ведь и попробовать, не?
Flasher писал(а):а ты про неизвестно какие переменные.
Flasher писал(а):поэтому само создание отдельных переменных практически не востребовано.
Flasher писал(а):Под новым понимался дополнительный, а не изменённый существующий.
Т.е. под каждый вид функционала свой парсер. Нет, это не вариант. Всё должно обрабатываться единообразно.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

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

На худой конец, вызов функций можно организовать как макрозамену: перед тем как вызывать процедуру, выполняешь предобработку строки параметров, подставляя макросы и раскрывая переменные окружения, например, StrUpper(бла-бла) заменяешь на БЛА-БЛА. А уже потом передаёшь результат основной процедуре:

Код: Выделить всё

Исходная строка:
SetEnv /EV COMMANDER_OSLANG StrUpper(%SYSINFO_USERLANG%)
После предобработки:
SetEnv /EV COMMANDER_OSLANG RUS
При этом парсер можно оставить как есть, просто добавить препроцессор. Кстати, его можно даже в виде плагина сделать, вызывать определенную функцию плагина и передавать ей строку, а она пусть возвращает обработанную строку, которую затем плагин будет парсить как обычно. От плагина всего требуется две экспортируемые функции: функция предобработки и функция освобождения памяти.

Код: Выделить всё

const char* __stdcall AutorunPreprocess(const char* InputLine);
void __stdcall AutorunFree(void* Pointer);
Т.е., читаешь очередную строку конфига, раскрываешь переменные окружения и передаёшь строку функции AutorunPreprocess, а дальше парсишь уже то, что она вернёт. По идее, в таком препроцессоре можно реализовать преобразование регистра, конкатенацию строк, какую-нибудь арифметику. Так можно даже разные языки внедрить - лишь бы AutorunPreprocess возвращала то, что ожидает парсер самого плагина.
Loopback писал(а):ЗЫ К слову, плагины к Autorun сейчас написаны на С++. Было интересно вспомнить, да и API надо было портировать. И что, кроме размера, заметил кто какие преимущества? :wink:
Обновлял сейчас плаг, начал ругаться на MoveOptionsButton, заметил, что Autorun_MoveButton.dll конкретно похудел - круто. 8)
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

MVV писал(а):Что ж там за парсер, что сложно добавить поддержку параметров функций. Я у себя проблему решал достаточно просто: если вижу скобку, ищу конец выражения в скобках с учетом типа и уровней вложенности, затем просто передаю всю подстроку во вложенный вызов как параметр, а дальше уже функция сама парсит его.
Я же не говорю, что это принципиально невозможно. Но в любом случае муторно. Ну если только ограничить использованием в качестве параметра функции только переменных, т.е. так можно StrUpper(%VAR%), а так нет: StrUpper("blabla%VAR%").

В любом случае, до релиза - никакого изменения синтаксиса делать не буду. Иначе плагин так и останется в вечной бете.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Loopback писал(а):Можно ведь и попробовать, не?
Можно, попробую. В Ридми будет?
Loopback писал(а):В любом случае, до релиза - никакого изменения синтаксиса делать не буду.
Никто не настаивает. :wink: Релизь что есть. А позже добавишь функции.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Действительно. Должна же будет версия 2.0 чем-то отличаться от 1.0. :D
Аватара пользователя
KopBuH
Сообщения: 127
Зарегистрирован: Пт июл 02, 2010 09:21
Откуда: Tashkent, Uzbekistan

Сообщение KopBuH »

насчет %SYSINFO_USERLANG%
насколько я понял, английская Windows 7 домашняя, руссифицированая принудительно русским MUI отображается как "ENU"?.
то есть даже если язык и интерфейс пользователя русский, то все равно получаем язык оригинальной системы, так?. (я понимаю, что значение берется из ключа sLanguage, но это получается уже не USERLANG, а скорее OSLANG...)
код из конфига:

Код: Выделить всё

# Проверка языка системы
StrUpper OSLANG %SYSINFO_USERLANG%
If %OSLANG% = ENU Then
  SetEnv /EV COMMANDER_OSLANG Eng
Else
  SetEnv /EV COMMANDER_OSLANG %OSLANG%
EndIf
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

KopBuH, эта штука какой язык пишет? Для русского должно быть $419, для английского - $409.
По идее, в твоём случае числа будут $419 (локаль), $419 (интерфейс юзера) и $409 (интерфейс системы).
Аватара пользователя
KopBuH
Сообщения: 127
Зарегистрирован: Пт июл 02, 2010 09:21
Откуда: Tashkent, Uzbekistan

Сообщение KopBuH »

жаль, но я уже отдал нотебук ) (он был клиентский).
а на моей, старой доброй XP SP3 - все 419.
но я отпишусь, если будет еще такая система (W7 Home Basic EN).
там я в систему MUI установил принудительно, через Vistalizator.
да, я заметил что в кусте реестра той системы (HKEY_CURRENT_USER\Control Panel\International) sLanguage был ENU.
а вот какой был "Locale" - не глянул :oops:

Добавлено спустя 1 час 2 минуты:

сейчас встретился с еще одной системой:
здесь все наоборот:
Win7 Home Basic, язык интерфейса - чисто английский.
но плагин детектит как Rus.

настройки системы:
http://savepic.org/2756825.jpg
http://savepic.org/2817240.jpg
текущее расположение - Россия.
Язык для не юникодных программ - русский.
Locale: 0419
"Эта штука" выдала это:
http://savepic.org/2773209.jpg
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

"Эта штука" выдала это:
Всё верно, локаль русская, интерфейсы английские. По идее, если вызвать GetUserDefaultUILanguage и преобразовать результат с помощью GetLocaleInfo, должны получить язык в виде строки.
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Еще одна бета, четырнадцатая.

Скачать

Из изменений - только новый формат справки.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Loopback
Файл wdx отличается от предыдущего.
Я думал, что справка будет пообширней в плане разъяснений. Ну, да ладно.

Добавь, пож-та, данные по процессору (производитель, ширина шины данных и т.д.).
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Ответить