handle нельзя использовать в качестве ID

Здесь обсуждается всё, что касается макросов.
User avatar
John Doe
Бюрократ
Posts: 13849
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

handle нельзя использовать в качестве ID

Post by John Doe »

Latest post of the previous page:

citRiks wrote: Sat 07 Mar, 2020 12:08 И я знаю, что например, все "edited field" (или правильнее "edit controls"?) не считаются для CRC32
Зачем "edited field". Нажмите например F5 - увидите имя файла (Copy ... to) абсолютно нередактируемое.
citRiks wrote: Sat 07 Mar, 2020 12:08 А так - "у меня работает, у @XeRoXa работает, у всех кто потрудился сделать минимальлный QA - работает".
Это хорошо.
Но добиться того чтобы у работало у всех и гарантированно можно только используя гуиды, как раз для подобных целей и введённые.
https://t.me/FarManager — Telegram чат
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

handle нельзя использовать в качестве ID

Post by citRiks »

John Doe wrote: Sat 07 Mar, 2020 13:27 Зачем "edited field". Нажмите например F5 - увидите имя файла (Copy ... to) абсолютно нередактируемое.
хорошее замечание, проверим эту тему
John Doe wrote: Sat 07 Mar, 2020 13:27 Но добиться того чтобы у работало у всех и гарантированно можно только используя гуиды, как раз для подобных целей и введённые.
ну введенные, да, есть польза от них, частичная, что по крайней мере майнстримные вещи используют их
Hо это нереально всем плагинописателям писать реквесты, это надо быть реквестором на полную ставку.
даже в самом ФАРе есть NetBox с десятью окнами настроек которые с одним и тем же гуидом,
и с одним и тем же handle кстати.

Может быть, лучше бы было, чтобы плагин или ФАР сами считали CRC32/MD5 на основе каких стабильных элементов?
Вот это можно было бы заставить делать, чтобы каждый плагин экспортировал генерацию хэша для диалогов,
и если хэш не совпадет с контрольной суммой, то усе
не, чето тоже всплыли в голове всякие невозможности реализации,
Все же думаю можно придумать как то сделать,
и думаю что это лучше чем начать писать всем на свете диалого-писателям с завышенными требованиями.
User avatar
John Doe
Бюрократ
Posts: 13849
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

handle нельзя использовать в качестве ID

Post by John Doe »

citRiks wrote: Sat 07 Mar, 2020 14:05 Hо это нереально всем плагинописателям писать реквесты, это надо быть реквестором на полную ставку.
Не надо лениться.
citRiks wrote: Sat 07 Mar, 2020 14:05 Может быть, лучше бы было, чтобы плагин или ФАР сами считали CRC32/MD5 на основе каких стабильных элементов?
Стабильный элемент один - гуид.
https://t.me/FarManager — Telegram чат
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

handle нельзя использовать в качестве ID

Post by citRiks »

Высяснилось что на handle действительно нелзья полагатся даже в пределах одной сессии,
он то становится общим для разных диалогов, то меняется на что-то другое.
Пока представляеся достаточно перспективным использовать Guid (когда он есть) ПЛЮС "dialog controls (elements) signature"
Что же такое "dialog controls (elements) signature"?
допустим диалог состоит из
1.) Рамка = 3
2.) Текст = 1
3.) Едит 1 = 4
4.) Едит 2 = 4
5.) Кнопка = 9
Где цифры это коды типа (DialogElementType).
Тогда signature будет"
"3;1;4;4;9"
Это решит проблему например окон настроек НетБокса, где все ГУИДы одинаковые, а состав диалога очень даже разный.
Ну и проблема упомянутая JonDoe для Copy/Move диалогов также решаема.

Проблемой остаются диалоги и меню без ГУИДов, - за неимением лучшего выбора,
для них посмотрим как пойдет с CRC32 по предполагаемым стабильным элементам
Last edited by citRiks on Sat 07 Mar, 2020 18:06, edited 3 times in total.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

handle нельзя использовать в качестве ID

Post by citRiks »

zg wrote: Fri 06 Mar, 2020 14:33 и с одной стороны каждому меню полезно иметь гуид, с другой — я не вижу рациональной составляющей в увеличении размеров меню.
Нужно смотреть на вещи ширше и глубже

Идентификация нужна для сохранения состояния
В состояние можно записывать разное полезное, например:
1.) Размеры меню
2.) Позиция меню, возможно с alingment (ом)
3.) Последнее выбранное значение этого меню
4.) Фильтр примененный к меню

это я слетy выдал, a если подумать, решать реальные задачи средствами ФАРа, то думаю что use-cases будет еще немало
User avatar
zg
zero-gravity
Posts: 6034
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

handle нельзя использовать в качестве ID

Post by zg »

citRiks wrote: Sun 08 Mar, 2020 21:58Нужно смотреть на вещи ширше и глубже
я смотрю и «ширше и глубже». не надо менять тему. это не вежливо.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

handle нельзя использовать в качестве ID

Post by citRiks »

John Doe wrote: Sat 07 Mar, 2020 14:49 Стабильный элемент один - гуид.
наверное. только тут у нас есть оказывается плагинописатели у которых в плагинах ГУИД того же самого диалога каждый раз новые, per FAR execution session.

на самом деле не помню откуда я взял эту версию плагина, но дело наверное не в этом,
а в том что технически плагинописатели могут рисовать себе любые ГУИДы любым диалогам хоть с помощью random()
А чего это у меня плагин весом всего лишь полмега не цепляется?
DeepCompare.v1-52.7z
(515.7 KiB) Downloaded 31 times
Last edited by citRiks on Mon 23 Mar, 2020 00:56, edited 4 times in total.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

handle нельзя использовать в качестве ID

Post by citRiks »

..и возникает вопрос что с этим делать?
Дедушка @XeRoX на этот раз (в отличие от прежнего подхода основанного на "стабильных элементах")
идет по пути сигнатуры диалогов основанной на стабильных свойствах диалоговых элементов, как-то:
1.) Изначальная координата и геометрия элемента (X1, Y2, X2, Y2)
2.) Тип диалогового элемента (поле, текст, список, итд)
на эти свойства делается хеширование.

На мой взгляд действительно захешированное сочетание этих свойств дает нужную уникальную характеристику диалога
И я пока еще не придумал как опровергнуть это предположение, думаю что не опровергается

UPD
видимо диалоги могут быть типа одинаковые, когда состоят из одного-двух-немногих элементов, но такое редкость и можно пренебречь.
Может быть, со ссоторны ФАРа самого, можно добавить независомое от плагина свойство диалога называемое "caller" например.
а "caller"-ом будет ДЛЛ плагина, ФАР должен знать по идее какая ДЛЛ вызывает диалог, и давать этому диалогу хэш ДЛЛ-я, или даже что правильнее ГУИД плагина
Ну в общем что-то в этом роде
Last edited by citRiks on Mon 23 Mar, 2020 01:01, edited 1 time in total.
User avatar
buniak_a_h
Posts: 4260
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

handle нельзя использовать в качестве ID

Post by buniak_a_h »

citRiks wrote: Mon 23 Mar, 2020 00:44 плагинописатели могут рисовать себе любые ГУИДы любым диалогам хоть с помощью random()
Зато Dlg.Owner у них == GUID-у плагина.
Хоть что-то постоянное в этом изменчивом мире…
User avatar
John Doe
Бюрократ
Posts: 13849
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

handle нельзя использовать в качестве ID

Post by John Doe »

citRiks wrote: Mon 23 Mar, 2020 00:53 ..и возникает вопрос что с этим делать?
Просить автора присвоить постоянный гуид.
https://t.me/FarManager — Telegram чат
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

handle нельзя использовать в качестве ID

Post by citRiks »

John Doe,
Просить автора присвоить постоянный гуид.
Да, в этом что-то есть.. И какие еще такие бесконечные унижения вы можете мне посоветовать?
Обязтельно этим займусь, вот только мазохиста в себе найду сначала, и сразу займусь ))

buniak_a_h,
Хоть что-то постоянное в этом изменчивом мире…
Да, спасибо, ваша эта помощь была очень кстати, надеюсь что действительно так без сюрпризов и рандомальных ГУИДов в owner-e..
Last edited by citRiks on Mon 23 Mar, 2020 19:13, edited 1 time in total.
Post Reply

Return to “Обсуждение макросов”