Страница 9 из 11
AHK_L переключение ассоциаций без перезапуска TC
Добавлено: Вс апр 28, 2013 18:40
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!
Добавлено: Вс апр 28, 2013 18:47
ask-rus
Обычно прохожу мимо, когда требуется установка самого AutoHotkey.
Добавлено: Вс апр 28, 2013 18:50
mf-zl
ask-rus
дело конечно ваше, но один раз скачать и установить мощный скриптовый язык - не такая уже и проблема...
ps добавил в шапку exe
Добавлено: Вс апр 28, 2013 19:37
Flasher
ask-rus писал(а):требуется установка самого AutoHotkey
Не требуется, как и в отношении AutoIt.
P.S. Не вижу смысла плодить
темы.
Добавлено: Вс апр 28, 2013 20:06
LonerD
mf-zl
В частных случаях скрипт, наверное, выполняет свою функцию. Но из-за
нелепых ограничений Тотала в отношении секции ассоциаций - в целом скрипт неработоспособный.
Во-первых, последние четыре строчки - явно лишние, при вызове диалогового окна и нажатия на ОК - можно потерять часть настроенных ассоциаций.
Во-вторых, даже без этих строк скрипт режет ассоциации (пока не пойму причины, видимо, в каких ещё строках ошибки...).
Лучше всего бэкапить ассоциации, а потом восстанавливать их. (или вообще сделать редирект секции [Associations] в отдельный файл, и при отключении - менять этот файл местами с файлом-пустышкой).
ask-rus писал(а):Обычно прохожу мимо, когда требуется установка самого AutoHotkey.
... и при этом сам пишешь, что используешь скрипты AutoIt...
Где логика?
А при наличии в Тотале внутренних ассоциаций - устанавливать в систему фактически ничего не надо.
Добавлено: Вс апр 28, 2013 21:06
mf-zl
LonerD, что же у тебя там такого в конфигах на over64k то ?
у меня, например, весь конфиг, включающий в себя:
wincmd.ini все команды описанные в справке
custom fields 10 шт
dirmenu 70 пунктов
searches на 979 расширений
сolorfilters 28
associations 21 шт
usercmd 40 команд
- занимает 37,8k
скинь конфиг для тэсту, что у тебя там обрезает
Добавлено: Вс апр 28, 2013 22:04
Avada
Объединено с уже существовавшей темой.
Добавлено: Вс апр 28, 2013 22:38
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 Кб
Панели инструментов - пока в процессе осмысления.
для тэсту, что у тебя там обрезает
В личку.
Добавлено: Пн апр 29, 2013 00:52
mf-zl
действительно обрезает, но ровно настолько, насколько это делает и сам TC
IniRead из инишника первые 65533 символов читает
Код: Выделить всё
IniRead, d, associations.ini, Associations
MsgBox, % StrLen(d)
Добавлено: Пн апр 29, 2013 02:16
LonerD
mf-zl писал(а):действительно обрезает, но ровно настолько, насколько это делает и сам TC
IniRead из инишника первые 65533 символов читает
Жах. Хоть бы в справке упомянули, что сделали такие ограничения.
Кстати, AHK прочитать может даже те ключи, которые находятся в конце ini-файла, как и Тотал. (то есть видятся не только первые символы, а весь файл!).
А обрезает Тотал и AHK по-разному, причём оба странным образом.
Ограничение на количество символов? Тогда откуда цифра 65533 и почему обрезается каждый раз по разному, размер итогового файла варьируется от 66321 до 66340 Кб (даже если отбросить название секции - всё равно получается больше, чем 65533).
Ещё можно было бы предположить, что это какие-то ограничения формата ini... Но ведь с секцией [Searches] Тотал работает корректно, ничего не обрезает при добавлении/удалении ключей этой секции (AHK обкорнал и эту секцию до 66340. Причём размер секции, видимо, неограничен - в сборке TC Image он достигает 250 Кб.
Добавлено: Пн апр 29, 2013 02:26
mf-zl
Жах. Хоть бы в справке упомянули, что сделали такие ограничения.
LonerD тебе ведь сам ghisler
ответил что есть ограничения на размер секции ini файла:
p.s. Поставил ограничение в
скрипте на размер секции
Добавлено: Пн апр 29, 2013 02:46
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.
В общем, пока не удаётся осмыслить это ограничение.
Добавлено: Пн апр 29, 2013 03:11
mf-zl
LonerD, насколько я понял имеется ввиду объём содержимого секции в байтах, а не файла.
Плюс стоит учитывать окончание строки и кодировку.
Для ASCII, windows-1251, koi-8, dos-866 - один символ = 1 байт
Unicode - один символ = 2 байта
Utf-8 - один символ от 1 до 6 байтов (латинские символы и стандартные знаки = 1 байт, русские буквы = 2 байта, разные иероглифы могут быть до 6 байтов длиной).
Отсюда и разница в размере выходного файла.

Добавлено: Пн апр 29, 2013 04:12
LonerD
стоит учитывать окончание строки
Ах вот оно что!
Проверил - точно, оно!
Окончания строк ведь тоже занимаю место в файле, а учитываются только 65533 символов.
А я столько времени не мог понять почему у меня обрезанный файл получается большего размера, чем ограничения

.
Добавлено: Пн апр 29, 2013 08:44
ask-rus
LonerD писал(а):... и при этом сам пишешь, что используешь скрипты AutoIt...
Где?

Скомпилированные использую, например, TC Multi Comment Edit. Опять же, когда-то стояли в системе AutoIt и AutoHotkey, теперь нет. Носить с собой целый скриптовый язык не хочется.