View previous topic :: View next topic |
Author |
Message |
Loopback
Joined: 07 Sep 2009 Posts: 1545
|
(Separately) Posted: Fri Mar 08, 2019 01:08 Post subject: |
|
|
Flasher wrote: | При каждом вызове любого окна считываются все хэши на предмет класса и разрешения? |
Даже если бы так было, ты бы вряд ли заметил замедление Разумеется, сделано не так. Хэши "независимые" считаются один раз для всех диалогов при запуске (как хорошо и эффективно было в первом варианте...). "Зависимые" - один раз для одного диалога при каждом открытии диалога (можно, конечно, и здесь чуть оптимизировать, но лень). Далее секции читаются и пишутся напрямую. |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri Mar 08, 2019 01:16 Post subject: |
|
|
Loopback wrote: | "Зависимые" - один раз для одного диалога при каждом открытии диалога | А как ты отличаешь зависимые от независимых без перечёта всех хэшей? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
 |
Loopback
Joined: 07 Sep 2009 Posts: 1545
|
(Separately) Posted: Fri Mar 08, 2019 01:31 Post subject: |
|
|
Flasher
Ээ, ну их как бы и не надо специально отличать. Они же уникальны для каждого диалога. И те и другие. Конечно, коллизии совсем нельзя исключить, но на таком количестве строк они очень маловероятны. |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri Mar 08, 2019 01:39 Post subject: |
|
|
Loopback
Ты же пишешь, что "сделано не так". Я спрашиваю про момент открытия любого окна. Ты пишешь, что независимые считаются единожды. Но файл же пополняется. Как без "вечного" пересчёта можно выяснить, какие считать единожды, а какие при каждом вызове? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
 |
Loopback
Joined: 07 Sep 2009 Posts: 1545
|
(Separately) Posted: Fri Mar 08, 2019 02:10 Post subject: |
|
|
Flasher
Единожды считается на основе данных диалога (строка из класса диалога, условий - кстати, забыл, надо еще обязательно учитывать условия visible). При запуске окна ("окно", чтобы отличать от диалога, "диалог" в данном случае - его описание во внутреннем массиве) - диалог мы определяем по классу окна плюс исходя из заданных условий, независимый хэш для него уже посчитан вначале. Для прошлой версии этого уже было достаточно, по хэшу сразу читаем/пишем секцию. Независимый хэш всегда одинаков для диалога при любом разрешении. Зависимый считается заново из тех же исходных данных (диалог-то мы уже нашли условиями) плюс строка разрешения экрана - хэш другой. При изменении разрешения строка разрешения поменяется, опять будет другой хэш. Всё просто
В общем, если остались вопросы - всё завтра. |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri Mar 08, 2019 08:36 Post subject: |
|
|
Loopback
То, чем отличаются зависимые и независимые хэши, я не спрашиваю. С этим было понятно.
Я спрашиваю про то, что происходит в момент запуска окна. Хэш независимый записан в ini. Но в любом случае нужно опять выснить все данные для сравнения с ini? Или есть какая-то автопривязка ко всем окнам типа раширенного стиля, которая сразу выдаёт нужный хэш?
Loopback wrote: | При изменении разрешения строка разрешения поменяется, опять будет другой хэш. | И всё равно непонятно, зачем писать разрешение в хэш, если можно вдвое сэкономить на секциях? Или хэш меняется при смене разрешения независимо от склейки? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
 |
Loopback
Joined: 07 Sep 2009 Posts: 1545
|
(Separately) Posted: Fri Mar 08, 2019 15:14 Post subject: |
|
|
Flasher
Слушай, я не знаю, как ещё объяснить. Я же сказал, в момент запуска окна считается ровно один хэш для того диалога, который открывается, с учётом разрешения. Считается на основе данных, которые ты задаешь командами AddDialog, AddCondition + строка разрешения. Hex-строка из подсчитанного хэша - это секция ini, я сразу ее читаю и записываю.
По "экономии" секций даже говорить не о чем, нет никакой принципиальной экономии, условно говоря, какая разница, 100 значений по 50 в 2 секции или по 4 в 25. Секций больше, зато не надо делать кучу конкатенаций для чтения каждого значения в виде хэш_Left и т.д.
Я же не говорю, что твоим способом принципиально нельзя сделать, но в данном случае это не даёт никакого выигрыша, плюс реализация уже была сделана, удобная и быстрая, зачем изобретать велосипед? |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri Mar 08, 2019 16:09 Post subject: |
|
|
Loopback
Как и из чего формируются хэши это по 2-му разу повторять не нужно.
Вот "сразу записываю" уже о чём-то говорит. Т.е. пишешь без сравнения.
Loopback wrote: | По "экономии" секций даже говорить не о чем, нет никакой принципиальной экономии, условно говоря, какая разница, 100 значений по 50 в 2 секции или по 4 в 25. | Насчёт "вдвое" я, конечно, слукавил:
 Твой вариант (32 строки) [хэш]
Prop1=значение
Prop2=значение
Prop3=значение
Prop4=значение
[хэш_изм.]
Prop1=значение
Prop2=значение
Prop3=значение
Prop4=значение
[хэш2]
Prop1=значение
Prop2=значение
Prop3=значение
Prop4=значение
[хэш2_изм.]
Prop1=значение
Prop2=значение
Prop4=значение
Prop5=значение
[хэш3]
Prop1=значение
Prop2=значение
Prop4=значение
Prop5=значение
[хэш3_изм.]
Prop1=значение
Prop2=значение
Prop3=значение
Prop4=значение
[Common]
RestoreFromLastRes=1
 Мой вариант (28 строк): [разрешение1]
хэш_Prop1=значение
хэш_Prop2=значение
хэш_Prop3=значение
хэш_Prop4=значение
хэш2_Prop1=значение
хэш2_Prop2=значение
хэш2_Prop3=значение
хэш2_Prop4=значение
хэш3_Prop1=значение
хэш3_Prop2=значение
хэш3_Prop3=значение
хэш3_Prop4=значение
[разрешение2]
хэш_Prop1=значение
хэш_Prop2=значение
хэш_Prop3=значение
хэш_Prop4=значение
хэш2_Prop1=значение
хэш2_Prop2=значение
хэш2_Prop3=значение
хэш2_Prop4=значение
хэш3_Prop1=значение
хэш3_Prop2=значение
хэш3_Prop3=значение
хэш3_Prop4=значение
[последнее разрешение]
разрешение=разрешение1 Разница несущественная, хотя с увеличением числа разрешений и окон она будет расти в пользу моего варианта.
Loopback wrote: | зато не надо делать кучу конкатенаций для чтения каждого значения в виде хэш_Left и т.д. | В рамках запуска одного окна не кучу, а всего 4. И тебе, если я правильно понял, не придётся по новой считать хэши: Loopback wrote: | Хэши "независимые" считаются один раз для всех диалогов при запуске | Уж явно 4 конкатенации по скорости значительно быстрее вычисления хэша.
Loopback wrote: | плюс реализация уже была сделана, удобная и быстрая, зачем изобретать велосипед? | Я сейчас больше интересуюсь не в целях перекомпиляции, а скорее в образовательных. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
 |
Loopback
Joined: 07 Sep 2009 Posts: 1545
|
(Separately) Posted: Fri Mar 08, 2019 17:32 Post subject: |
|
|
Quote: | Уж явно 4 конкатенации по скорости значительно быстрее вычисления хэша. |
Замерять не буду, но не факт, хэш простейший, криптостойкость же ему не нужна. Плюс есть как минимум два пути оптимизации, может даже и сделаю один (расчет зависимого на основе независимого), тогда будет точно быстрее. Но на самом деле реально не вижу необходимости, на строках в пару десятков символов это микросекунды, а у нас не какие-нибудь нагруженные базы данных, где это будет хоть как-то заметно.
Quote: | интересуюсь не в целях перекомпиляции |
Это понятно, про переделывать я и слушать не стану Посему предлагаю заканчивать, раз все равно ничего меняться не будет. |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri Mar 08, 2019 18:11 Post subject: |
|
|
Loopback wrote: | Это понятно | Было бы понятно, не спросил бы про велосипед.
В общем, если захочешь оптимизировать, делай. Или выкладывай релиз с правкой смещения до левой границы и хелпа (если нужны примеры всех окон Тотала с комментами, пиши, выложу). Я бы ещё переименовал плагин под новые реалии. MoveWindow/MoveDialog — что-то в этом духе. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
 |
Loopback
Joined: 07 Sep 2009 Posts: 1545
|
(Separately) Posted: Fri Mar 08, 2019 18:34 Post subject: |
|
|
Flasher wrote: | . Я бы ещё переименовал плагин под новые реалии. |
Про переименование уже думал, как минимум хорошо бы главную функцию переименовать (для совместимости можно псевдоним добавить). Если переименовать сам плагин, его старая версия останется лежать мусором, к сожалению, тоталовский инсталлятор плагинов не умеет удалять файлы. |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri Mar 08, 2019 18:42 Post subject: |
|
|
Loopback
За мусором каждый сам должен следить. Это по сути то же самое, что устанавливать новый плагин, не удалив уже ненужный аналог.
Да и у первых версий тоже не было приставки Autorun_. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
 |
rk2019
Joined: 01 Mar 2019 Posts: 16 Location: Moskov
|
(Separately) Posted: Fri Mar 08, 2019 22:31 Post subject: |
|
|
Loopback
Извините, что вмешиваюсь. Я очень рад, что тотал развивается и такие важные функции появляются, но я 20 лет работал не зная этих функций и сегодня - они мне не нужны, только мозолят глаза.
Я очень благодарен чудной версии от 4 марта, которая наконец вернула узкие диалоги в ТС 8.52а. Не сочтите за наглость, спросить как убрать нахрен выделенные красным пункты? |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Mar 09, 2019 07:03 Post subject: |
|
|
rk2019
Сместить их на сотню-другую пикселей вправо /X-ключом такая уж проблема? В случае кнопки [+] достаточно просто занулить ширину: /W:0. Указания контролов я вам давал в примере под спойлером. Учитесь решать подобные вопросы самостоятельно, тем более что выглядят они как откровенное издевательство на диалогом — особенно в отношении весьма и весьма полезной кнопки [+]. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
 |
Avada

Joined: 01 Aug 2008 Posts: 10418 Location: Россия, Саратов
|
(Separately) Posted: Sat Mar 09, 2019 08:22 Post subject: |
|
|
Loopback
Flasher
Насчёт новых реалий — я бы название не трогал. Намёк на изменения содержимого окон достаточно адкватен, а привязки к конкретному диалогу там и нет. В конце концом, и TWinKey, например, получил когда-то название по одной конкретной функции, далеко впоследствии не главной...
rk2019
Вы уже отняли у участников этой темы непомерно много времени на удовлетворение своих прихотей. Дальше — самостоятельно. Тем более при такой наглядной демонстрации непонимания и незнания современных возможностей TC и нежелания этому учиться. Про кнопку вам ответили, а скрытие опции для проверки и так предусмотрено штатно: прочитайте в справке описание ключа VerifyEnabled. _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|