Autorun
Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
В компилированном виде это займёт ещё меньше, чем в текстовом файле и отработает быстрее.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Добавляй, что мешает-то?Flasher писал(а):Так, хорошо, а если пробелы между переменными и текстом есть?
http://forum.wincmd.ru/viewpost.php?p=98902Flasher писал(а):Этого я не писал. Тем более про функции.
Не про функции, про команды. Сути-то не меняет.
Угу, т.е. я сейчас начну переписывать с нуля парсер, только чтобы сделать красиво строчные функции? Здорово придуманоFlasher писал(а):В этом никто не сомневался. Речь только может идти про новый.
Нет, мне сейчас как-то больше хочется наконец релиз выпустить.
ЗЫ К слову, плагины к Autorun сейчас написаны на С++. Было интересно вспомнить, да и API надо было портировать. И что, кроме размера, заметил кто какие преимущества?
Пробел выполняет фунцию сепаратора в синтаксисе. Им отделяются ключи, имена переменных, имена секций и т..д. Синтаксис глаголит последовательность расположения данных. Плагин разве не споткнётся на любом подобном пробеле? Или там кавычки решают?Loopback писал(а):Добавляй, что мешает-то?
Меняет. Я написал про некоторые новые команды, а ты про неизвестно какие переменные.Loopback писал(а):Не про функции, про команды. Сути-то не меняет
Под новым понимался дополнительный, а не изменённый существующий.Loopback писал(а):Угу, т.е. я сейчас начну переписывать с нуля парсер
Чего перед чем?Loopback писал(а):И что, кроме размера, заметил кто какие преимущества?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Решают. Можно ведь и попробовать, не?Flasher писал(а):Или там кавычки решают?
Flasher писал(а):а ты про неизвестно какие переменные.
Flasher писал(а):поэтому само создание отдельных переменных практически не востребовано.
Т.е. под каждый вид функционала свой парсер. Нет, это не вариант. Всё должно обрабатываться единообразно.Flasher писал(а):Под новым понимался дополнительный, а не изменённый существующий.
Что ж там за парсер, что сложно добавить поддержку параметров функций. Я у себя проблему решал достаточно просто: если вижу скобку, ищу конец выражения в скобках с учетом типа и уровней вложенности, затем просто передаю всю подстроку во вложенный вызов как параметр, а дальше уже функция сама парсит его.
На худой конец, вызов функций можно организовать как макрозамену: перед тем как вызывать процедуру, выполняешь предобработку строки параметров, подставляя макросы и раскрывая переменные окружения, например, StrUpper(бла-бла) заменяешь на БЛА-БЛА. А уже потом передаёшь результат основной процедуре:
При этом парсер можно оставить как есть, просто добавить препроцессор. Кстати, его можно даже в виде плагина сделать, вызывать определенную функцию плагина и передавать ей строку, а она пусть возвращает обработанную строку, которую затем плагин будет парсить как обычно. От плагина всего требуется две экспортируемые функции: функция предобработки и функция освобождения памяти.
Т.е., читаешь очередную строку конфига, раскрываешь переменные окружения и передаёшь строку функции AutorunPreprocess, а дальше парсишь уже то, что она вернёт. По идее, в таком препроцессоре можно реализовать преобразование регистра, конкатенацию строк, какую-нибудь арифметику. Так можно даже разные языки внедрить - лишь бы AutorunPreprocess возвращала то, что ожидает парсер самого плагина.

На худой конец, вызов функций можно организовать как макрозамену: перед тем как вызывать процедуру, выполняешь предобработку строки параметров, подставляя макросы и раскрывая переменные окружения, например, 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);Обновлял сейчас плаг, начал ругаться на MoveOptionsButton, заметил, что Autorun_MoveButton.dll конкретно похудел - круто.Loopback писал(а):ЗЫ К слову, плагины к Autorun сейчас написаны на С++. Было интересно вспомнить, да и API надо было портировать. И что, кроме размера, заметил кто какие преимущества?
Я же не говорю, что это принципиально невозможно. Но в любом случае муторно. Ну если только ограничить использованием в качестве параметра функции только переменных, т.е. так можно StrUpper(%VAR%), а так нет: StrUpper("blabla%VAR%").MVV писал(а):Что ж там за парсер, что сложно добавить поддержку параметров функций. Я у себя проблему решал достаточно просто: если вижу скобку, ищу конец выражения в скобках с учетом типа и уровней вложенности, затем просто передаю всю подстроку во вложенный вызов как параметр, а дальше уже функция сама парсит его.
В любом случае, до релиза - никакого изменения синтаксиса делать не буду. Иначе плагин так и останется в вечной бете.
Можно, попробую. В Ридми будет?Loopback писал(а):Можно ведь и попробовать, не?
Никто не настаивает.Loopback писал(а):В любом случае, до релиза - никакого изменения синтаксиса делать не буду.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
насчет %SYSINFO_USERLANG%
насколько я понял, английская Windows 7 домашняя, руссифицированая принудительно русским MUI отображается как "ENU"?.
то есть даже если язык и интерфейс пользователя русский, то все равно получаем язык оригинальной системы, так?. (я понимаю, что значение берется из ключа sLanguage, но это получается уже не USERLANG, а скорее OSLANG...)
код из конфига:
насколько я понял, английская 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
KopBuH, эта штука какой язык пишет? Для русского должно быть $419, для английского - $409.
По идее, в твоём случае числа будут $419 (локаль), $419 (интерфейс юзера) и $409 (интерфейс системы).
По идее, в твоём случае числа будут $419 (локаль), $419 (интерфейс юзера) и $409 (интерфейс системы).
жаль, но я уже отдал нотебук ) (он был клиентский).
а на моей, старой доброй XP SP3 - все 419.
но я отпишусь, если будет еще такая система (W7 Home Basic EN).
там я в систему MUI установил принудительно, через Vistalizator.
да, я заметил что в кусте реестра той системы (HKEY_CURRENT_USER\Control Panel\International) sLanguage был ENU.
а вот какой был "Locale" - не глянул
Добавлено спустя 1 час 2 минуты:
сейчас встретился с еще одной системой:
здесь все наоборот:
Win7 Home Basic, язык интерфейса - чисто английский.
но плагин детектит как Rus.
настройки системы:
http://savepic.org/2756825.jpg
http://savepic.org/2817240.jpg
текущее расположение - Россия.
Язык для не юникодных программ - русский.
Locale: 0419
"Эта штука" выдала это:
http://savepic.org/2773209.jpg
а на моей, старой доброй XP SP3 - все 419.
но я отпишусь, если будет еще такая система (W7 Home Basic EN).
там я в систему MUI установил принудительно, через Vistalizator.
да, я заметил что в кусте реестра той системы (HKEY_CURRENT_USER\Control Panel\International) sLanguage был ENU.
а вот какой был "Locale" - не глянул
Добавлено спустя 1 час 2 минуты:
сейчас встретился с еще одной системой:
здесь все наоборот:
Win7 Home Basic, язык интерфейса - чисто английский.
но плагин детектит как Rus.
настройки системы:
http://savepic.org/2756825.jpg
http://savepic.org/2817240.jpg
текущее расположение - Россия.
Язык для не юникодных программ - русский.
Locale: 0419
"Эта штука" выдала это:
http://savepic.org/2773209.jpg
Loopback
Файл wdx отличается от предыдущего.
Я думал, что справка будет пообширней в плане разъяснений. Ну, да ладно.
Добавь, пож-та, данные по процессору (производитель, ширина шины данных и т.д.).
Файл wdx отличается от предыдущего.
Я думал, что справка будет пообширней в плане разъяснений. Ну, да ладно.
Добавь, пож-та, данные по процессору (производитель, ширина шины данных и т.д.).
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.