Страница 56 из 243

Добавлено: Вс фев 03, 2013 23:13
MVV
Да, верхний нужен не всем, как и нижний. Но какой смысл делать избыточную операцию, когда она может быть сделана только теми, кому она нужна?

Добавлено: Вс фев 03, 2013 23:17
Flasher
В компилированном виде это займёт ещё меньше, чем в текстовом файле и отработает быстрее.

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

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


ЗЫ К слову, плагины к Autorun сейчас написаны на С++. Было интересно вспомнить, да и API надо было портировать. И что, кроме размера, заметил кто какие преимущества? :wink:

Добавлено: Пн фев 04, 2013 00:41
Flasher
Loopback писал(а):Добавляй, что мешает-то?
Пробел выполняет фунцию сепаратора в синтаксисе. Им отделяются ключи, имена переменных, имена секций и т..д. Синтаксис глаголит последовательность расположения данных. Плагин разве не споткнётся на любом подобном пробеле? Или там кавычки решают?
Loopback писал(а):Не про функции, про команды. Сути-то не меняет
Меняет. Я написал про некоторые новые команды, а ты про неизвестно какие переменные.
Loopback писал(а):Угу, т.е. я сейчас начну переписывать с нуля парсер
Под новым понимался дополнительный, а не изменённый существующий.
Loopback писал(а):И что, кроме размера, заметил кто какие преимущества?
Чего перед чем?

Добавлено: Пн фев 04, 2013 10:23
Loopback
Flasher писал(а):Или там кавычки решают?
Решают. Можно ведь и попробовать, не?
Flasher писал(а):а ты про неизвестно какие переменные.
Flasher писал(а):поэтому само создание отдельных переменных практически не востребовано.
Flasher писал(а):Под новым понимался дополнительный, а не изменённый существующий.
Т.е. под каждый вид функционала свой парсер. Нет, это не вариант. Всё должно обрабатываться единообразно.

Добавлено: Пн фев 04, 2013 11:41
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)

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

В любом случае, до релиза - никакого изменения синтаксиса делать не буду. Иначе плагин так и останется в вечной бете.

Добавлено: Пн фев 04, 2013 16:12
Flasher
Loopback писал(а):Можно ведь и попробовать, не?
Можно, попробую. В Ридми будет?
Loopback писал(а):В любом случае, до релиза - никакого изменения синтаксиса делать не буду.
Никто не настаивает. :wink: Релизь что есть. А позже добавишь функции.

Добавлено: Пн фев 04, 2013 16:59
MVV
Действительно. Должна же будет версия 2.0 чем-то отличаться от 1.0. :D

Добавлено: Сб фев 09, 2013 12:06
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

Добавлено: Сб фев 09, 2013 15:00
MVV
KopBuH, эта штука какой язык пишет? Для русского должно быть $419, для английского - $409.
По идее, в твоём случае числа будут $419 (локаль), $419 (интерфейс юзера) и $409 (интерфейс системы).

Добавлено: Сб фев 09, 2013 16:22
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

Добавлено: Сб фев 09, 2013 17:16
MVV
"Эта штука" выдала это:
Всё верно, локаль русская, интерфейсы английские. По идее, если вызвать GetUserDefaultUILanguage и преобразовать результат с помощью GetLocaleInfo, должны получить язык в виде строки.

Добавлено: Вс фев 10, 2013 12:57
Loopback
Еще одна бета, четырнадцатая.

Скачать

Из изменений - только новый формат справки.

Добавлено: Ср фев 13, 2013 00:12
Flasher
Loopback
Файл wdx отличается от предыдущего.
Я думал, что справка будет пообширней в плане разъяснений. Ну, да ладно.

Добавь, пож-та, данные по процессору (производитель, ширина шины данных и т.д.).