Latest post of the previous page:
citRiks, кроме двух случаев (когда требуется узнать DlgItem.History и DlgItem.MaxLength) я не вижу ни одного случая полезности GetDlgItemShort-а. Но эти два случая, на мой взгляд, удобнее было бы получить через Dlg.GetValue. Как инициатор темы рекомендую на этом завершить дискуссию.DM_GETDLGITEMSHORT: operation not implemented Topic is solved
- buniak_a_h
- Posts: 4262
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 644 times
- Contact:
DM_GETDLGITEMSHORT: operation not implemented
не, ну при чем тут кто инициатор, я эту тему нашел когда искал на форуме что за беда такая с этим меседжем,buniak_a_h wrote: ↑Wed 06 Jan, 2021 21:06 citRiks, кроме двух случаев (когда требуется узнать DlgItem.History и DlgItem.MaxLength) я не вижу ни одного случая полезности GetDlgItemShort-а. Но эти два случая, на мой взгляд, удобнее было бы получить через Dlg.GetValue. Как инициатор темы рекомендую на этом завершить дискуссию.
который описан в АПИ, но не работает.
ну поискал, а тут вездесущий вы но это наверное не дает вам особых авторских прав?
Так считаю что у нас с вами накопилось достаточно пожеланий чтобы этот меседж был.
ЛуаМанагер именно в силу совокупности множества маленьких неэффективностей, которые складываются в одну большую.
и поэтому это замечательный пример небоходимости оптимизировать, поэтому и приведен в пример,
хоть он и не конкретно изза GETDLGITEM тормозит.
А на больших списках тормозить будет именно изза GETDLGITEM.
Есть у меня примеры конечно, всякие, но смотреть надо ширше, а к людям быть мяхче
если есть легкая возможность убрать тормоз, то и надо его убрать.
даже если это "всего лишь" 100 милисекунд, зачем они нужны и кому надо чтобы они были? не понимаю ..
как эти милисекудны суммируются до неюзабельности прекрасно показано ЛуаМанагером,
который прекрасный макрос сам по себе, но пал ненужной жертвой
- buniak_a_h
- Posts: 4262
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 644 times
- Contact:
DM_GETDLGITEMSHORT: operation not implemented
Таки нет! Меня вполне удовлетворил ответ Шмуэля. Не вижу смысла плодить сущности, пока Оккама своей бритвой не сделает обрезание.
Нет, не будет. Если добавить указанный функционал, то GETDLGITEM в 90% случаев станет ненужным. А тормозить будет только на DI_LIST и на очень больших DI_COMBOBOX. И только из-за 6-го элемента - массива. Остальное - микросекунды. Да и …SHORT тут не поможет.
Про LuaManager ничего не понял. У меня работает.
DM_GETDLGITEMSHORT: operation not implemented
ну указанный функционал это альтернатива того же самого, можно ка через МакроАпи, так и через ДиалогАпи, что является делом вкуса больше, и еще немного делом удобства. ну как хотите вобщем. ну ладно, не важно уже кто чего понял или не понял, можно закончить темуbuniak_a_h wrote: ↑Wed 06 Jan, 2021 23:50 . Если добавить указанный функционал, то GETDLGITEM в 90% случаев станет ненужным.
DM_GETDLGITEMSHORT: operation not implemented
PS
A мене вот ДиалогАпи нравятся больше чем МакроАпи.
Универсальнее что ли. Например для новой функциональности просто добавляем еще один тип меседжа или евента
A мене вот ДиалогАпи нравятся больше чем МакроАпи.
Универсальнее что ли. Например для новой функциональности просто добавляем еще один тип меседжа или евента
- buniak_a_h
- Posts: 4262
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 644 times
- Contact:
DM_GETDLGITEMSHORT: operation not implemented
Добавочка.
Посмотрел я описание (точнее, отличие) DM_GETDLGITEMSHORT от DM_GETDLGITEM. Разница в трёх строковых позициях. Т.е. и для DI_COMBOBOX-а, и для DI_LISTBOX-а 6-й элемент (ListItems) возвращается по обоим вызовам. Я сильно сомневаюсь, что игнорирование 3-х (а в большинстве случаев - 2-х, т.к. Mask используется крайне редко) элементов возвращаемой структуры может сильно увеличить производительность.
Last edited by buniak_a_h on Sat 09 Jan, 2021 03:32, edited 1 time in total.
DM_GETDLGITEMSHORT: operation not implemented
Значит надо чтобы в реализации не возвращал этого лишнего благо что переделывать не надоbuniak_a_h wrote: ↑Sat 09 Jan, 2021 03:32 Т.е. и для DI_COMBOBOX-а, и для DI_LISTBOX-а 6-й элемент (ListItems) возвращается по обоим вызовам
- buniak_a_h
- Posts: 4262
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 644 times
- Contact:
DM_GETDLGITEMSHORT: operation not implemented
Можно требовать "всё, кроме …". А можно требовать одно поле (или некую его характеристику) той же структуры. Лично мне второй вариант нравится больше, но это как раз - функция
Dlg.GetValue
. Тем более, что она - расширяемая.Вы что-то писали про "макро АПИ", "диалог АПИ", "плугиновый АПИ"… Я не силён в терминологии, знаю только, что доступ из скрипта к одним и тем же данным диалога возможен несколькими путями. И мне бы понравилось больше всего иметь 2 варианта: получить полную структуру и получить конкретную характеристику. А получать "почти все" - это какой-то гибрид. Явно излишний.
DM_GETDLGITEMSHORT: operation not implemented
Dlg.GetValue я подозреваю в меньшей эффективности, долго обьяснять, и может я и не прав.buniak_a_h wrote: ↑Sat 09 Jan, 2021 05:50 Можно требовать "всё, кроме …". А можно требовать одно поле (или некую его характеристику) той же структуры. Лично мне второй вариант нравится больше, но это как раз - функция Dlg.GetValue. Тем более, что она - расширяемая.
Если вкратце - то <handle>.send(..) возможно более эффективен поскольку обращается напрямую через готовый handle.
а Dlg.GetValue(..) возможно проделывает более долгий путь через FarMacroАpi.
DM_GETDLGITEMSHORT: operation not implemented
как я понимаю, тут так:buniak_a_h wrote: ↑Sat 09 Jan, 2021 05:50 Вы что-то писали про "макро АПИ", "диалог АПИ", "плугиновый АПИ"…
1.) MаcroApi - это в основном наследие старой модели API, доступна для скриптинга из древних (не Луа) макросов
эта модель довольно обширна, но признана не удовлетворяющей там чему-то.
2.) PluginAPI - то что нативные (C++, Pascal) плагины могут делать, и это больше чем из старой MаcroApi
3.) "Новые" FarAPI, подразделяются на PanelAPI, DialogAPI, EditorAPI и др.
Эти "новые" API предоставляют для НЕплагинового скриптинга все прежние MacroAPI и почти все PluginAPI.
Т.е. это новые, с несколько другой моделью (например всякие события и меседжи), а те старые.
Поэтому на предложение добавить чего-либо в "старые" MacroAPI и смотрят косо.
Если я в чем то ошибаюсь, пусть меня поправят
DM_GETDLGITEMSHORT: operation not implemented
не, тут я вот что, есть диалоговые элементы обычные, а есть списки, в позиции 6, может еще в каких-то позициях.buniak_a_h wrote: ↑Sat 09 Jan, 2021 05:50 А получать "почти все" - это какой-то гибрид. Явно излишний.
Списки чреваты тем что в них может быть неограниченное количество значений.
Поэтому нужны как минимум два варианта:
1.) SHORT Не нужны списки, а только базовые составляющие, такие как координаты, имя, другие одиночные значения.
Могут быть предоставвлены всем (без-списковым) скопом, поскольку никаких значительных обьемов памяти тут нет и быть не может
2.) "FULL", или "LONG", когда нужны списки, пусть идут вместе с остальными элементами, они погоды все равно не сделают
Могут быть предоставлены всем скопом, потому что программа (acceptor) предполагается
что должна быть готова что сейчас понадобиться самосвал для памяти.
В идеале надо бы добавить еще:
3.) SELECTIVE "Взять конкретный список/значение" из элемента, это больше похоже на то что вы предлагаете,
и я с этимс огласен, но мне первые два представляются более важными, и вас они тоже будут удовлетворять,
точнее вам, как и мне нужен 1.) SHORT
Last edited by citRiks on Sat 09 Jan, 2021 17:11, edited 2 times in total.
- John Doe
- Бюрократ
- Posts: 13851
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 428 times
- Contact:
DM_GETDLGITEMSHORT: operation not implemented
Итоги такие:
DM_GETDLGITEMSHORT изменяться не будет в любом случае.
Нужна ли какая-то другая команда (DM_GETDLGITEM_NOLIST) неясно абсолютно, и продолжение заполнения темы словоблудием к пониманию приблизить нас не может.
Не показан практический сценарий, когда производительности DM_GETDLGITEM недостаточно
Если же реальный сценарий обнаружится - надо будет разобраться где именно узкое место. Не исключено, что проблема только в производительности Lua.
На этом тему закрываю.
DM_GETDLGITEMSHORT изменяться не будет в любом случае.
Нужна ли какая-то другая команда (DM_GETDLGITEM_NOLIST) неясно абсолютно, и продолжение заполнения темы словоблудием к пониманию приблизить нас не может.
Не показан практический сценарий, когда производительности DM_GETDLGITEM недостаточно
Если же реальный сценарий обнаружится - надо будет разобраться где именно узкое место. Не исключено, что проблема только в производительности Lua.
На этом тему закрываю.
https://t.me/FarManager — Telegram чат