Кнопка вкл\выкл "внутренние ассоциации"

Обсуждение вопросов автоматизации Total Commander с помощью сторонних программ и скриптовых технологий.

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

Аватара пользователя
mf-zl
Сообщения: 71
Зарегистрирован: Вс авг 21, 2005 03:30
Откуда: BLR
Контактная информация:

AHK_L переключение ассоциаций без перезапуска TC

Сообщение mf-zl »

AHK_L переключение ассоциаций без перезапуска TC:

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

#SingleInstance off
SetBatchLines, -1
SetKeyDelay, -1
SetWinDelay, -1

IniRead, RedirectAssociations, % COMMANDER_INI, Associations, RedirectSection, 0
Transform, INI, Deref, % (RedirectAssociations ? RedirectAssociations : COMMANDER_INI)
IniRead, Associations, % INI, Associations
If StrLen(Associations) < 65531 {
  IniRead, _d, % INI, % (Asc(Associations) ? "" : "-") "Associations"
  IniWrite, % _d, % INI, % (Asc(Associations) ? "-" : "") "Associations"
  IniDelete, % INI, % (Asc(Associations) ? "" : "-") "Associations"
  PostMessage, 1075, 519, 0,, ahk_class TTOTAL_CMD
  WinWait, ahk_class TDlgCustomColors
  If !ErrorLevel
    ControlClick, TButton2,,,, 2
} Else, MsgBox, Error: associations reached 64Kb section limit!
Последний раз редактировалось mf-zl Пн апр 29, 2013 03:46, всего редактировалось 7 раз.
Аватара пользователя
ask-rus
Сообщения: 2077
Зарегистрирован: Вт ноя 10, 2009 14:06
Откуда: Russian Federation

Сообщение ask-rus »

Обычно прохожу мимо, когда требуется установка самого AutoHotkey.
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Аватара пользователя
mf-zl
Сообщения: 71
Зарегистрирован: Вс авг 21, 2005 03:30
Откуда: BLR
Контактная информация:

Сообщение mf-zl »

ask-rus
дело конечно ваше, но один раз скачать и установить мощный скриптовый язык - не такая уже и проблема...

ps добавил в шапку exe
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

ask-rus писал(а):требуется установка самого AutoHotkey
Не требуется, как и в отношении AutoIt.

P.S. Не вижу смысла плодить темы.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
LonerD
Сообщения: 1174
Зарегистрирован: Вт янв 04, 2011 03:56
Откуда: Макеевка
Контактная информация:

Сообщение LonerD »

mf-zl
В частных случаях скрипт, наверное, выполняет свою функцию. Но из-за нелепых ограничений Тотала в отношении секции ассоциаций - в целом скрипт неработоспособный.
Во-первых, последние четыре строчки - явно лишние, при вызове диалогового окна и нажатия на ОК - можно потерять часть настроенных ассоциаций.
Во-вторых, даже без этих строк скрипт режет ассоциации (пока не пойму причины, видимо, в каких ещё строках ошибки...).

Лучше всего бэкапить ассоциации, а потом восстанавливать их. (или вообще сделать редирект секции [Associations] в отдельный файл, и при отключении - менять этот файл местами с файлом-пустышкой).
ask-rus писал(а):Обычно прохожу мимо, когда требуется установка самого AutoHotkey.
... и при этом сам пишешь, что используешь скрипты AutoIt...
Где логика?
А при наличии в Тотале внутренних ассоциаций - устанавливать в систему фактически ничего не надо.
Windows 11 | TC DreamLair eternal pre-α
Аватара пользователя
mf-zl
Сообщения: 71
Зарегистрирован: Вс авг 21, 2005 03:30
Откуда: BLR
Контактная информация:

Сообщение mf-zl »

LonerD, что же у тебя там такого в конфигах на over64k то ? :shock:

у меня, например, весь конфиг, включающий в себя:
wincmd.ini все команды описанные в справке
custom fields 10 шт
dirmenu 70 пунктов
searches на 979 расширений
сolorfilters 28
associations 21 шт
usercmd 40 команд

- занимает 37,8k

скинь конфиг для тэсту, что у тебя там обрезает :roll:
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Объединено с уже существовавшей темой.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
LonerD
Сообщения: 1174
Зарегистрирован: Вт янв 04, 2011 03:56
Откуда: Макеевка
Контактная информация:

Сообщение LonerD »

mf-zl
что же у тебя там такого в конфигах на over64k то ?
Associations - 142 секций (99.6 Кб)
DirMenu - 207 пунктов
CustomFields - 41
OverwriteCustomField - 26
HintsCustomField - 26
Extensions - ок. 250 расширений
Searches - 185 секций (70 Кб) - не только расширения
Shortcuts - ок. 500 хоткеев
User - не использую (всё через em_ )
Разрешения экрана - 40 секций
Rename - 36 шаблонов
SyncOptions - 12 шаблонов
Colors - ок. 40 (пока не готовы)
и остального понемножку.

Общий размер wincmd.ini + файлы-редиректы - около 380 Кб (всё разнесено редиректами по 14 файлам).
Главное меню - более 2100 пунктов, 170 Кб (да ещё и на трёх языках, рус и укр уже почти сделаны, а английский - в процессе, пока только схематично).
Пользовательские команды - более 2300 штук, 450 Кб
Панели инструментов - пока в процессе осмысления.

для тэсту, что у тебя там обрезает
В личку.
Windows 11 | TC DreamLair eternal pre-α
Аватара пользователя
mf-zl
Сообщения: 71
Зарегистрирован: Вс авг 21, 2005 03:30
Откуда: BLR
Контактная информация:

Сообщение mf-zl »

действительно обрезает, но ровно настолько, насколько это делает и сам TC :(
IniRead из инишника первые 65533 символов читает

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

IniRead, d, associations.ini, Associations
MsgBox, % StrLen(d)
Аватара пользователя
LonerD
Сообщения: 1174
Зарегистрирован: Вт янв 04, 2011 03:56
Откуда: Макеевка
Контактная информация:

Сообщение LonerD »

mf-zl писал(а):действительно обрезает, но ровно настолько, насколько это делает и сам TC :(
IniRead из инишника первые 65533 символов читает
Жах. Хоть бы в справке упомянули, что сделали такие ограничения.
Кстати, AHK прочитать может даже те ключи, которые находятся в конце ini-файла, как и Тотал. (то есть видятся не только первые символы, а весь файл!).

А обрезает Тотал и AHK по-разному, причём оба странным образом.
Ограничение на количество символов? Тогда откуда цифра 65533 и почему обрезается каждый раз по разному, размер итогового файла варьируется от 66321 до 66340 Кб (даже если отбросить название секции - всё равно получается больше, чем 65533).

Ещё можно было бы предположить, что это какие-то ограничения формата ini... Но ведь с секцией [Searches] Тотал работает корректно, ничего не обрезает при добавлении/удалении ключей этой секции (AHK обкорнал и эту секцию до 66340. Причём размер секции, видимо, неограничен - в сборке TC Image он достигает 250 Кб.
Последний раз редактировалось LonerD Пн апр 29, 2013 02:31, всего редактировалось 1 раз.
Windows 11 | TC DreamLair eternal pre-α
Аватара пользователя
mf-zl
Сообщения: 71
Зарегистрирован: Вс авг 21, 2005 03:30
Откуда: BLR
Контактная информация:

Сообщение mf-zl »

Жах. Хоть бы в справке упомянули, что сделали такие ограничения.
LonerD тебе ведь сам ghisler ответил что есть ограничения на размер секции ini файла:
According to Microsoft, each section in an ini file is limited to 64 kBytes: http://msdn.microsoft.com/en-us/library ... 85%29.aspx
p.s. Поставил ограничение в скрипте на размер секции
Аватара пользователя
LonerD
Сообщения: 1174
Зарегистрирован: Вт янв 04, 2011 03:56
Откуда: Макеевка
Контактная информация:

Сообщение LonerD »

mf-zl писал(а):сам ghisler ответил что есть ограничения на размер секции ini файла
Он не пояснил - почему размер обрезанных Тоталом секций почти на 800 символов больше этого ограничения и почему секция Searches в Тотале не обрезается.

:| Может, 65533 - это не первые символы инишника, а первые символы значений ключей ini-файла?
Но нет - на msdn говорится, что это имена ключей и их значения:
The new key names and associated values that are to be written to the named section. This string is limited to 65,535 bytes.

В общем, пока не удаётся осмыслить это ограничение.
Последний раз редактировалось LonerD Пн апр 29, 2013 04:01, всего редактировалось 1 раз.
Windows 11 | TC DreamLair eternal pre-α
Аватара пользователя
mf-zl
Сообщения: 71
Зарегистрирован: Вс авг 21, 2005 03:30
Откуда: BLR
Контактная информация:

Сообщение mf-zl »

LonerD, насколько я понял имеется ввиду объём содержимого секции в байтах, а не файла.
Плюс стоит учитывать окончание строки и кодировку.

Для ASCII, windows-1251, koi-8, dos-866 - один символ = 1 байт
Unicode - один символ = 2 байта
Utf-8 - один символ от 1 до 6 байтов (латинские символы и стандартные знаки = 1 байт, русские буквы = 2 байта, разные иероглифы могут быть до 6 байтов длиной).


Отсюда и разница в размере выходного файла. :idea:
Аватара пользователя
LonerD
Сообщения: 1174
Зарегистрирован: Вт янв 04, 2011 03:56
Откуда: Макеевка
Контактная информация:

Сообщение LonerD »

стоит учитывать окончание строки
Ах вот оно что! :D
Проверил - точно, оно!
Окончания строк ведь тоже занимаю место в файле, а учитываются только 65533 символов. :idea:
А я столько времени не мог понять почему у меня обрезанный файл получается большего размера, чем ограничения :roll: .
Windows 11 | TC DreamLair eternal pre-α
Аватара пользователя
ask-rus
Сообщения: 2077
Зарегистрирован: Вт ноя 10, 2009 14:06
Откуда: Russian Federation

Сообщение ask-rus »

LonerD писал(а):... и при этом сам пишешь, что используешь скрипты AutoIt...
Где? :o Скомпилированные использую, например, TC Multi Comment Edit. Опять же, когда-то стояли в системе AutoIt и AutoHotkey, теперь нет. Носить с собой целый скриптовый язык не хочется.
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Ответить