Даже если бы так было, ты бы вряд ли заметил замедлениеFlasher писал(а):При каждом вызове любого окна считываются все хэши на предмет класса и разрешения?
Autorun
Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
А как ты отличаешь зависимые от независимых без перечёта всех хэшей?Loopback писал(а):"Зависимые" - один раз для одного диалога при каждом открытии диалога
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Loopback
Ты же пишешь, что "сделано не так". Я спрашиваю про момент открытия любого окна. Ты пишешь, что независимые считаются единожды. Но файл же пополняется. Как без "вечного" пересчёта можно выяснить, какие считать единожды, а какие при каждом вызове?
Ты же пишешь, что "сделано не так". Я спрашиваю про момент открытия любого окна. Ты пишешь, что независимые считаются единожды. Но файл же пополняется. Как без "вечного" пересчёта можно выяснить, какие считать единожды, а какие при каждом вызове?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Flasher
Единожды считается на основе данных диалога (строка из класса диалога, условий - кстати, забыл, надо еще обязательно учитывать условия visible). При запуске окна ("окно", чтобы отличать от диалога, "диалог" в данном случае - его описание во внутреннем массиве) - диалог мы определяем по классу окна плюс исходя из заданных условий, независимый хэш для него уже посчитан вначале. Для прошлой версии этого уже было достаточно, по хэшу сразу читаем/пишем секцию. Независимый хэш всегда одинаков для диалога при любом разрешении. Зависимый считается заново из тех же исходных данных (диалог-то мы уже нашли условиями) плюс строка разрешения экрана - хэш другой. При изменении разрешения строка разрешения поменяется, опять будет другой хэш. Всё просто
В общем, если остались вопросы - всё завтра.
Единожды считается на основе данных диалога (строка из класса диалога, условий - кстати, забыл, надо еще обязательно учитывать условия visible). При запуске окна ("окно", чтобы отличать от диалога, "диалог" в данном случае - его описание во внутреннем массиве) - диалог мы определяем по классу окна плюс исходя из заданных условий, независимый хэш для него уже посчитан вначале. Для прошлой версии этого уже было достаточно, по хэшу сразу читаем/пишем секцию. Независимый хэш всегда одинаков для диалога при любом разрешении. Зависимый считается заново из тех же исходных данных (диалог-то мы уже нашли условиями) плюс строка разрешения экрана - хэш другой. При изменении разрешения строка разрешения поменяется, опять будет другой хэш. Всё просто
В общем, если остались вопросы - всё завтра.
Loopback
То, чем отличаются зависимые и независимые хэши, я не спрашиваю. С этим было понятно.
Я спрашиваю про то, что происходит в момент запуска окна. Хэш независимый записан в ini. Но в любом случае нужно опять выснить все данные для сравнения с ini? Или есть какая-то автопривязка ко всем окнам типа раширенного стиля, которая сразу выдаёт нужный хэш?
То, чем отличаются зависимые и независимые хэши, я не спрашиваю. С этим было понятно.
Я спрашиваю про то, что происходит в момент запуска окна. Хэш независимый записан в ini. Но в любом случае нужно опять выснить все данные для сравнения с ini? Или есть какая-то автопривязка ко всем окнам типа раширенного стиля, которая сразу выдаёт нужный хэш?
И всё равно непонятно, зачем писать разрешение в хэш, если можно вдвое сэкономить на секциях? Или хэш меняется при смене разрешения независимо от склейки?Loopback писал(а):При изменении разрешения строка разрешения поменяется, опять будет другой хэш.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Flasher
Слушай, я не знаю, как ещё объяснить. Я же сказал, в момент запуска окна считается ровно один хэш для того диалога, который открывается, с учётом разрешения. Считается на основе данных, которые ты задаешь командами AddDialog, AddCondition + строка разрешения. Hex-строка из подсчитанного хэша - это секция ini, я сразу ее читаю и записываю.
По "экономии" секций даже говорить не о чем, нет никакой принципиальной экономии, условно говоря, какая разница, 100 значений по 50 в 2 секции или по 4 в 25. Секций больше, зато не надо делать кучу конкатенаций для чтения каждого значения в виде хэш_Left и т.д.
Я же не говорю, что твоим способом принципиально нельзя сделать, но в данном случае это не даёт никакого выигрыша, плюс реализация уже была сделана, удобная и быстрая, зачем изобретать велосипед?
Слушай, я не знаю, как ещё объяснить. Я же сказал, в момент запуска окна считается ровно один хэш для того диалога, который открывается, с учётом разрешения. Считается на основе данных, которые ты задаешь командами AddDialog, AddCondition + строка разрешения. Hex-строка из подсчитанного хэша - это секция ini, я сразу ее читаю и записываю.
По "экономии" секций даже говорить не о чем, нет никакой принципиальной экономии, условно говоря, какая разница, 100 значений по 50 в 2 секции или по 4 в 25. Секций больше, зато не надо делать кучу конкатенаций для чтения каждого значения в виде хэш_Left и т.д.
Я же не говорю, что твоим способом принципиально нельзя сделать, но в данном случае это не даёт никакого выигрыша, плюс реализация уже была сделана, удобная и быстрая, зачем изобретать велосипед?
Loopback
Как и из чего формируются хэши это по 2-му разу повторять не нужно.
Вот "сразу записываю" уже о чём-то говорит. Т.е. пишешь без сравнения.
[cut="Твой вариант (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[/cut]
[cut="Мой вариант (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[/cut]Разница несущественная, хотя с увеличением числа разрешений и окон она будет расти в пользу моего варианта.
Как и из чего формируются хэши это по 2-му разу повторять не нужно.
Вот "сразу записываю" уже о чём-то говорит. Т.е. пишешь без сравнения.
Насчёт "вдвое" я, конечно, слукавил:Loopback писал(а):По "экономии" секций даже говорить не о чем, нет никакой принципиальной экономии, условно говоря, какая разница, 100 значений по 50 в 2 секции или по 4 в 25.
[cut="Твой вариант (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[/cut]
[cut="Мой вариант (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[/cut]Разница несущественная, хотя с увеличением числа разрешений и окон она будет расти в пользу моего варианта.
В рамках запуска одного окна не кучу, а всего 4. И тебе, если я правильно понял, не придётся по новой считать хэши:Loopback писал(а):зато не надо делать кучу конкатенаций для чтения каждого значения в виде хэш_Left и т.д.
Уж явно 4 конкатенации по скорости значительно быстрее вычисления хэша.Loopback писал(а):Хэши "независимые" считаются один раз для всех диалогов при запуске
Я сейчас больше интересуюсь не в целях перекомпиляции, а скорее в образовательных.Loopback писал(а):плюс реализация уже была сделана, удобная и быстрая, зачем изобретать велосипед?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Замерять не буду, но не факт, хэш простейший, криптостойкость же ему не нужна. Плюс есть как минимум два пути оптимизации, может даже и сделаю один (расчет зависимого на основе независимого), тогда будет точно быстрее. Но на самом деле реально не вижу необходимости, на строках в пару десятков символов это микросекунды, а у нас не какие-нибудь нагруженные базы данных, где это будет хоть как-то заметно.Уж явно 4 конкатенации по скорости значительно быстрее вычисления хэша.
Это понятно, про переделывать я и слушать не стануинтересуюсь не в целях перекомпиляции
Было бы понятно, не спросил бы про велосипед.Loopback писал(а):Это понятно
В общем, если захочешь оптимизировать, делай. Или выкладывай релиз с правкой смещения до левой границы и хелпа (если нужны примеры всех окон Тотала с комментами, пиши, выложу). Я бы ещё переименовал плагин под новые реалии. MoveWindow/MoveDialog — что-то в этом духе.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Про переименование уже думал, как минимум хорошо бы главную функцию переименовать (для совместимости можно псевдоним добавить). Если переименовать сам плагин, его старая версия останется лежать мусором, к сожалению, тоталовский инсталлятор плагинов не умеет удалять файлы.Flasher писал(а):. Я бы ещё переименовал плагин под новые реалии.
Loopback
За мусором каждый сам должен следить. Это по сути то же самое, что устанавливать новый плагин, не удалив уже ненужный аналог.
Да и у первых версий тоже не было приставки Autorun_.
За мусором каждый сам должен следить. Это по сути то же самое, что устанавливать новый плагин, не удалив уже ненужный аналог.
Да и у первых версий тоже не было приставки Autorun_.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Loopback
Извините, что вмешиваюсь. Я очень рад, что тотал развивается и такие важные функции появляются, но я 20 лет работал не зная этих функций и сегодня - они мне не нужны, только мозолят глаза.

Я очень благодарен чудной версии от 4 марта, которая наконец вернула узкие диалоги в ТС 8.52а. Не сочтите за наглость, спросить как убрать нахрен выделенные красным пункты?
Извините, что вмешиваюсь. Я очень рад, что тотал развивается и такие важные функции появляются, но я 20 лет работал не зная этих функций и сегодня - они мне не нужны, только мозолят глаза.

Я очень благодарен чудной версии от 4 марта, которая наконец вернула узкие диалоги в ТС 8.52а. Не сочтите за наглость, спросить как убрать нахрен выделенные красным пункты?
rk2019
Сместить их на сотню-другую пикселей вправо /X-ключом такая уж проблема? В случае кнопки [+] достаточно просто занулить ширину: /W:0. Указания контролов я вам давал в примере под спойлером. Учитесь решать подобные вопросы самостоятельно, тем более что выглядят они как откровенное издевательство на диалогом — особенно в отношении весьма и весьма полезной кнопки [+].
Сместить их на сотню-другую пикселей вправо /X-ключом такая уж проблема? В случае кнопки [+] достаточно просто занулить ширину: /W:0. Указания контролов я вам давал в примере под спойлером. Учитесь решать подобные вопросы самостоятельно, тем более что выглядят они как откровенное издевательство на диалогом — особенно в отношении весьма и весьма полезной кнопки [+].
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Loopback
Flasher
Насчёт новых реалий — я бы название не трогал. Намёк на изменения содержимого окон достаточно адкватен, а привязки к конкретному диалогу там и нет. В конце концом, и TWinKey, например, получил когда-то название по одной конкретной функции, далеко впоследствии не главной...
rk2019
Вы уже отняли у участников этой темы непомерно много времени на удовлетворение своих прихотей. Дальше — самостоятельно. Тем более при такой наглядной демонстрации непонимания и незнания современных возможностей TC и нежелания этому учиться. Про кнопку вам ответили, а скрытие опции для проверки и так предусмотрено штатно: прочитайте в справке описание ключа VerifyEnabled.
Flasher
Насчёт новых реалий — я бы название не трогал. Намёк на изменения содержимого окон достаточно адкватен, а привязки к конкретному диалогу там и нет. В конце концом, и TWinKey, например, получил когда-то название по одной конкретной функции, далеко впоследствии не главной...
rk2019
Вы уже отняли у участников этой темы непомерно много времени на удовлетворение своих прихотей. Дальше — самостоятельно. Тем более при такой наглядной демонстрации непонимания и незнания современных возможностей TC и нежелания этому учиться. Про кнопку вам ответили, а скрытие опции для проверки и так предусмотрено штатно: прочитайте в справке описание ключа VerifyEnabled.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Не представит себе наши безобразия.