Ограничения на число пунктов в главном меню
Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik
- Вахмурка
- Сообщения: 2587
- Зарегистрирован: Пн дек 27, 2004 14:47
- Откуда: Большая деревня Москва
- Контактная информация:
TWinKey установлен? Если да, то ноги растут, скорее всего, оттуда. Отключи и попробуй. Сейчас лень искать (если надо, то найду) мои диалоги с VadiMGP по этому поводу.
А вот такие аццкие цифры появляются по воле доброхотов типа Petermad, которые стряпают отличные расширенные меню и присобачивают в языковый файл хренову гору собственных em_ команд.
Сейчас подсчитал - у меня около сотни своих и около двухсот - от Petermad'а. Хотя триста - это не 2000... После того, как VadiMGP подрихтовал TWinKey, у меня глюки прекратились. Может, он просто расширил границы, не решив проблему принципиально?
А вот такие аццкие цифры появляются по воле доброхотов типа Petermad, которые стряпают отличные расширенные меню и присобачивают в языковый файл хренову гору собственных em_ команд.
Сейчас подсчитал - у меня около сотни своих и около двухсот - от Petermad'а. Хотя триста - это не 2000... После того, как VadiMGP подрихтовал TWinKey, у меня глюки прекратились. Может, он просто расширил границы, не решив проблему принципиально?
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
- LonerD
- Сообщения: 1174
- Зарегистрирован: Вт янв 04, 2011 03:56
- Откуда: Макеевка
- Контактная информация:
Вот же, нашёл таки обсуждение. Утверждается про 2000 пользовательских команд.
Но у меня глюки начинаются раньше чем меню достигает этих команд.
Сократил количество пунктов меню.
Осталось 1899 em-команд и 99 cm-команд.
Не помогло.
Такс... Начали закрадываться сомнения. А ограничения ли это Тотала? Или всё же не совсем Тотала? Или совсем не Тотала?
MVV, у меня многие команды запускаются через TCFS2, фактически панели и построены на этой утилите. Так вот именно команды, вызываемые через TCFS2 и начинает колбасить. Причём команды на панели, которая вызывается первой, отрабатывают нормально, а дальше - чудеса в решете.
Провёл эксперимент. Поместил рядышком две команды:
em_Program
и
[em_Program_TCFS2]
cmd=%commander_path%\Plugins\exe\TCFS2\TCFS2.exe /ef tem(em_Program)
Если пунктов в меню указанное выше количество, то первая отрабатывает, вторая - нет.
Убираю часть пунктов из меню - вторая команда работает.
Но у меня глюки начинаются раньше чем меню достигает этих команд.
Сократил количество пунктов меню.
Осталось 1899 em-команд и 99 cm-команд.
Не помогло.
Такс... Начали закрадываться сомнения. А ограничения ли это Тотала? Или всё же не совсем Тотала? Или совсем не Тотала?
MVV, у меня многие команды запускаются через TCFS2, фактически панели и построены на этой утилите. Так вот именно команды, вызываемые через TCFS2 и начинает колбасить. Причём команды на панели, которая вызывается первой, отрабатывают нормально, а дальше - чудеса в решете.
Провёл эксперимент. Поместил рядышком две команды:
em_Program
и
[em_Program_TCFS2]
cmd=%commander_path%\Plugins\exe\TCFS2\TCFS2.exe /ef tem(em_Program)
Если пунктов в меню указанное выше количество, то первая отрабатывает, вторая - нет.
Убираю часть пунктов из меню - вторая команда работает.
Windows 11 | TC DreamLair eternal pre-α
- LonerD
- Сообщения: 1174
- Зарегистрирован: Вт янв 04, 2011 03:56
- Откуда: Макеевка
- Контактная информация:
Согласен.MVV писал(а):LonerD,
Ну уж TCFS2 тут точно не при чем, она ж ничего сама не парсит, просто просит тотала выполнить команду...
Попробовал вызвать скрипт с той же пользовательской командой - получаю аналогичное сообщение "File not found"
Причём если вызывать скрипт с панели напрямую
%COMMANDER_PATH%\Utilities\AutoHotkey\AutoHotkey.exe %COMMANDER_PATH%\Scripts\SendTCUser.ahk
то он отрабатывает.
А если назначить этот же скрипт на em_-команду и сделать кнопку для этой команды и разместить её не на главной панели, то не отрабатывает. Если эту же кнопку перенести на ту панель, которая загружается по умолчанию - тогда кнопка отрабатывает.
Получается, дело не только в главном меню, но и в количестве em-команд на панелях.
На всякий случай проверил ещё одну теорию. Редактирование ini-файла с пользовательскими командами ничего не даёт, так что дело не в общем количестве прописанных команд, а в количестве так сказать загруженных в память.
Поправьте, плиз.
Я правильно понял принцип работы Тотала с командами?:
В памяти создаётся некий массив команд (всех или только em?). При загрузке Тотал вначале считывает файл главного меню и прописывает в этот массив все команды из меню. Также по мере выполнения прописываются все команды, вызванные в процессе работы другими средствами (через плагин autorun, через хоткеи, одна из другой и т.д...). При открытии панели инструментов Тотал перечитывает содержимое файла панели и тоже прописывает в массив все найденные на панели команды.
Размер массива с командами ограничен (сознательно Гислером или системные ограничения?). За один сеанс работы туда может быть прописано не более n-команд.
Windows 11 | TC DreamLair eternal pre-α
Если так подумать, из USERCMD.ini можно считывать команды средствами чтения INI-файлов, и знать нужно лишь их имена. С помощью Process Monitor можно посмотреть, к каким файлам тотал обращается при вызове команды. А хранит ли тотал команды в памяти, можно посмотреть, создавая команды с уникальными параметрами, чтобы искать их в памяти процесса.
- LonerD
- Сообщения: 1174
- Зарегистрирован: Вт янв 04, 2011 03:56
- Откуда: Макеевка
- Контактная информация:
MVV
Смысл слов понял. Как проверить через Process Monitor - не понял
Проверил несколько другим способом.
Запустил Тотала, с помощью диспетчера задач сохранил дамп, перешёл в Тотале на вторую панель, сохранил дамп снова. Открыл дампы в гекс-редакторе. ЕМ-команды, прописанные на первой панели - встречаются в обоих дампах по два раза - один раз это фрагмент файла панели, а второй раз - это видимо загруженная в память команда. Прописанные на второй панели - встречаются в дампе только один раз как фрагмент файла панели.
Причём первые шесть команд второй панели - рабочие (и в дампе встречаются по два раза), а все команды что идут дальше - нет. То есть уже понятно, что Тотал прочитал файл панели, начал вносить встретившиеся em-команды в некий массив, но место в массиве закончилось.
Моя теория подтверждается. Чем больше em-команд встречает Тотал в процессе сеанса работы, тем больше переполняется его память, и начиная с некоторой встреченной команды все последующие встреченные команды уже не будут восприниматься.
Похоже, суммарно и получается лимит - 2000 пользовательских команд или около того.
Намеренное ли это ограничение для того, чтобы Тотал потреблял меньше памяти? Ненамеренные ограничения (Гислер прописал такое значение и не подумал, что кому-то может понадобиться больше)? Баг Тотала? Ограничения, накладываемые системой?
MVV
Можешь как-то донести эту мысль до Гислера, сформулировав её более правильно с точки зрения программиста (и самое главное - на английском) ?
Смысл слов понял. Как проверить через Process Monitor - не понял
Проверил несколько другим способом.
Запустил Тотала, с помощью диспетчера задач сохранил дамп, перешёл в Тотале на вторую панель, сохранил дамп снова. Открыл дампы в гекс-редакторе. ЕМ-команды, прописанные на первой панели - встречаются в обоих дампах по два раза - один раз это фрагмент файла панели, а второй раз - это видимо загруженная в память команда. Прописанные на второй панели - встречаются в дампе только один раз как фрагмент файла панели.
Причём первые шесть команд второй панели - рабочие (и в дампе встречаются по два раза), а все команды что идут дальше - нет. То есть уже понятно, что Тотал прочитал файл панели, начал вносить встретившиеся em-команды в некий массив, но место в массиве закончилось.
Моя теория подтверждается. Чем больше em-команд встречает Тотал в процессе сеанса работы, тем больше переполняется его память, и начиная с некоторой встреченной команды все последующие встреченные команды уже не будут восприниматься.
Похоже, суммарно и получается лимит - 2000 пользовательских команд или около того.
Намеренное ли это ограничение для того, чтобы Тотал потреблял меньше памяти? Ненамеренные ограничения (Гислер прописал такое значение и не подумал, что кому-то может понадобиться больше)? Баг Тотала? Ограничения, накладываемые системой?
MVV
Можешь как-то донести эту мысль до Гислера, сформулировав её более правильно с точки зрения программиста (и самое главное - на английском) ?
Windows 11 | TC DreamLair eternal pre-α
- LonerD
- Сообщения: 1174
- Зарегистрирован: Вт янв 04, 2011 03:56
- Откуда: Макеевка
- Контактная информация:
Хм... А может Тахер и має рацію.
А может и нет. А может это лишь часть правды, а истина по прежнему где-то там...
Имена em-команд у меня занимают 37 Кб только для главного меню(даже если удалить все разделители между ними). И работают ведь. Именно в главном меню все команды работают. Значит, порог, похоже, всё же выше названных Тахером 32 кб.
У меня действительно имена комманд длинные, и составлены не просто из набора цифр, а "по смыслу".
Сильно длинные названия команд? ОК, все названия сложно перевести в циферки, как советует Тахер. Но в названиях многих команд у меня есть повторяющиеся символы. (em_prog_NazvaProgramy). Сделал кардинальное сокращение имён файлов (убрал приставку prog_ из названий) - везде, в меню, в пользовательских командах, в ассоциациях. Итого, суммарно имена всех em-команд сократились на 2000 символов. Что это дало? Ровным счётом - НИЧЕГО !!!. Если раньше работало меню, главная панель и первые несколько команд второй панели, то и теперь они же работают
Попробовал наоборот - удлиннить названия всех команд. Опять та же история.
Попробовал сосчитать количество всех команд. При таком количестве это проблемно... В главном меню часть пунктов повторяется в разных местах... На панелях инструментов имена уникальные (отличаются от главного меню). В ассоциациях и хоткеях ещё есть уникальные еm-команды, которые грузятся с Тоталом.
Но если прикинуть (плюс-минус 10-20 команд), то как раз и получается
ВЫВОД: За сеанс работы Тотал может работать только с первыми 2000 увиденными (загруженными в память) пользовательскими командами.
А может и нет. А может это лишь часть правды, а истина по прежнему где-то там...
Имена em-команд у меня занимают 37 Кб только для главного меню(даже если удалить все разделители между ними). И работают ведь. Именно в главном меню все команды работают. Значит, порог, похоже, всё же выше названных Тахером 32 кб.
У меня действительно имена комманд длинные, и составлены не просто из набора цифр, а "по смыслу".
Сильно длинные названия команд? ОК, все названия сложно перевести в циферки, как советует Тахер. Но в названиях многих команд у меня есть повторяющиеся символы. (em_prog_NazvaProgramy). Сделал кардинальное сокращение имён файлов (убрал приставку prog_ из названий) - везде, в меню, в пользовательских командах, в ассоциациях. Итого, суммарно имена всех em-команд сократились на 2000 символов. Что это дало? Ровным счётом - НИЧЕГО !!!. Если раньше работало меню, главная панель и первые несколько команд второй панели, то и теперь они же работают
Попробовал наоборот - удлиннить названия всех команд. Опять та же история.
Попробовал сосчитать количество всех команд. При таком количестве это проблемно... В главном меню часть пунктов повторяется в разных местах... На панелях инструментов имена уникальные (отличаются от главного меню). В ассоциациях и хоткеях ещё есть уникальные еm-команды, которые грузятся с Тоталом.
Но если прикинуть (плюс-минус 10-20 команд), то как раз и получается
ВЫВОД: За сеанс работы Тотал может работать только с первыми 2000 увиденными (загруженными в память) пользовательскими командами.
Windows 11 | TC DreamLair eternal pre-α