Latest post of the previous page:
когда писалось, за основу брался changelog. сейчас глянул код - для DN_GETDIALOGINFO оно не нужно.FIN — Fix Incorrect Names
- Alexey Samlyukov
- Posts: 1765
- Joined: Tue 15 Mar, 2005 17:28
- Been thanked: 7 times
- Contact:
Re: FIN — Fix Incorrect Names
Так... разберемся.
DN_* - это фар говорит плагину "дядь, я тут немного диалог инициализирую, хочу у тебя инфу про гуид" (так как фар передает сцылку на свою переменную, то он ее нулями и забивает)
DM_* - а это кто угодно (фар, плагин) другому - "мужик, дай мне гуид вон того диалога, ась?" (как фар может проинициализировать переменную плагина?)
DN_* - это фар говорит плагину "дядь, я тут немного диалог инициализирую, хочу у тебя инфу про гуид" (так как фар передает сцылку на свою переменную, то он ее нулями и забивает)
DM_* - а это кто угодно (фар, плагин) другому - "мужик, дай мне гуид вон того диалога, ась?" (как фар может проинициализировать переменную плагина?)
We are the Borg. You will be assimilated.
So Say We All!
So Say We All!
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
Re: FIN — Fix Incorrect Names
оффтопик и немного критика, но...
Может было бы лучше и не вводить эту структуру вообще, надо получить туда\сюда гуид диалога, пусть бы были отдельные команда и сообщение отдельно для гуида, адрес которого передается (и это весьма принятая практика в АПИ Фара). Мелкая гранулярность данных позволяет получить ровно те данные, что нужны, это хорошо - проще АПИ (команд больше, правда), часто более эффективная работа (не обязательно всегда). Фару не надо отрабатывать все эти "версии" структур опять же.
Но я не предлагаю ломать для этого конкретного случая. Сделано, пусть будет. Может, на будущее, типа просьба..
Просто по опыту написания ООП оболочки вокруг Фар (Фарнет) могу сказать, что чем больше структуры несвязанных напрямую данных Фар использует для коммуникации, тем более громоздкая работа получается. Часто эти структуры Фар или плагин обязаны заполнять целиком только из одного реально требуемого данного (но неизвестно какого, конечно, поэтому целиком все и заполняется).
Может было бы лучше и не вводить эту структуру вообще, надо получить туда\сюда гуид диалога, пусть бы были отдельные команда и сообщение отдельно для гуида, адрес которого передается (и это весьма принятая практика в АПИ Фара). Мелкая гранулярность данных позволяет получить ровно те данные, что нужны, это хорошо - проще АПИ (команд больше, правда), часто более эффективная работа (не обязательно всегда). Фару не надо отрабатывать все эти "версии" структур опять же.
Но я не предлагаю ломать для этого конкретного случая. Сделано, пусть будет. Может, на будущее, типа просьба..
Просто по опыту написания ООП оболочки вокруг Фар (Фарнет) могу сказать, что чем больше структуры несвязанных напрямую данных Фар использует для коммуникации, тем более громоздкая работа получается. Часто эти структуры Фар или плагин обязаны заполнять целиком только из одного реально требуемого данного (но неизвестно какого, конечно, поэтому целиком все и заполняется).
- DrKnS
- Posts: 6114
- Joined: Thu 04 Aug, 2005 06:44
- Location: Kyiv
- Has thanked: 12 times
- Been thanked: 426 times
Re: FIN — Fix Incorrect Names
Так, проясняем.
StructSize всегда ставит тот, кто аллоцирует структуру, ибо только он знает её размер.
Соответственно, для DM ставит плагин, для DN - фар.
Везде, где надо - поправлено.
StructSize всегда ставит тот, кто аллоцирует структуру, ибо только он знает её размер.
Соответственно, для DM ставит плагин, для DN - фар.
Везде, где надо - поправлено.
Re: FIN — Fix Incorrect Names
Во! Теперь я всё понял. Спасибо!DrKnS wrote:StructSize всегда ставит тот, кто аллоцирует структуру, ибо только он знает её размер.
Соответственно, для DM ставит плагин, для DN - фар.
Радует и обнадёживает...DrKnS wrote:StructSize Везде, где надо - поправлено.
Съешь мыша – стань настоящим клавишником!
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
Re: FIN — Fix Incorrect Names
Хорошо, что разобрались.Соответственно, для DM ставит плагин, для DN - фар.
Не совсем понятно, зачем это делает Фар в DN, какой практический смысл?
- chupakabra
- Posts: 1023
- Joined: Wed 27 Jul, 2005 19:36
- Contact:
Re: FIN — Fix Incorrect Names
Чтобы плагин знал версию структуры?NightRoman wrote:Не совсем понятно, зачем это делает Фар в DN, какой практический смысл?
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
Re: FIN — Fix Incorrect Names
chupakabra
Чтобы плагин мог быть совместим со старыми версиями Фара? Если да, то это не очень хороший дизайн. Во-первых, в принципе не хорошо, что плагин поставлен в такую ситуацию, в нормальном АПИ этого желательно избегать. Во-вторых, это решается обновлением Фара, что всегда возможно в отличие от обновления плагина, автор которого пропал или забил на плагин.
Чтобы плагин мог быть совместим со старыми версиями Фара? Если да, то это не очень хороший дизайн. Во-первых, в принципе не хорошо, что плагин поставлен в такую ситуацию, в нормальном АПИ этого желательно избегать. Во-вторых, это решается обновлением Фара, что всегда возможно в отличие от обновления плагина, автор которого пропал или забил на плагин.
- DrKnS
- Posts: 6114
- Joined: Thu 04 Aug, 2005 06:44
- Location: Kyiv
- Has thanked: 12 times
- Been thanked: 426 times
Re: FIN — Fix Incorrect Names
Для единообразия.
Размер там без надобности, но структура используется одна и та же для ввода и для вывода, так что пусть уж лучше там будет что-то осмысленное.
Если применения ему не видишь - просто игнорируй его.
Размер там без надобности, но структура используется одна и та же для ввода и для вывода, так что пусть уж лучше там будет что-то осмысленное.
Если применения ему не видишь - просто игнорируй его.
-
- Posts: 6834
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Re: FIN — Fix Incorrect Names
Тигрёнок
Не могу понять по исходникам, почему плагин правильно работает с путём .. (две точки) при копировании и переносе, вроде как он эти точки удаляет? Просвети, пожалуйста.
Не могу понять по исходникам, почему плагин правильно работает с путём .. (две точки) при копировании и переносе, вроде как он эти точки удаляет? Просвети, пожалуйста.
Re: FIN — Fix Incorrect Names
Сам не знаю...Shmuel wrote:Не могу понять по исходникам, почему плагин правильно работает с путём .. (две точки) при копировании и переносе, вроде как он эти точки удаляет? Просвети, пожалуйста.
Там очевидная ошибка (мерси!), но если по DM_SETDLGITEM подаётся пустая строка, то оно просто не отрабатывается FAR'ом... Более того, если сделать несколько изменений, то в ответ на передачу после них пустой строки, они откатятся.
Съешь мыша – стань настоящим клавишником!
-
- Posts: 6834
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Re: FIN — Fix Incorrect Names
Исходники - свежие. Поигрался сам, вот что заметил:
1. Если использовать DM_SETDLGITEM, как делает плагин, то почти всегда файл копируется/переносится в родительскую папку, несмотря на удаление точек. Но был один случай, когда поведение было ожидаемым - варнинг "Incorrect target list".
2. Если же использовать DM_SETTEXT - ничего не переносится/не копируется, выдаётся варнинг.
Так что похоже, что это Фар чудит (хотя в плагине ситуация с .. в конце имени тоже должна была бы особо обрабатываться).
1. Если использовать DM_SETDLGITEM, как делает плагин, то почти всегда файл копируется/переносится в родительскую папку, несмотря на удаление точек. Но был один случай, когда поведение было ожидаемым - варнинг "Incorrect target list".
2. Если же использовать DM_SETTEXT - ничего не переносится/не копируется, выдаётся варнинг.
Так что похоже, что это Фар чудит (хотя в плагине ситуация с .. в конце имени тоже должна была бы особо обрабатываться).
-
- Posts: 6834
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Re: FIN — Fix Incorrect Names
Ещё заметил, что это странное поведение DM_SETDLGITEM имеет место в диалогах CopyFilesId, HardSymLinkId, но не наблюдается в FileOpenCreateId, FileSaveAsId, MakeFolderId. Хотя возможно, что это просто игра случая.
Re: FIN — Fix Incorrect Names
Это понятно. Тем более, что Path\.. сейчас превращается в просто Path, что вообще никуда не годится...Shmuel wrote:в плагине ситуация с .. в конце имени тоже должна была бы особо обрабатываться
Однако непонятно, что делать. Во что уместно превращать, скажем, путь из трёх точек или две точки с пробелом в конце? Или просто выдавать предупреждение, ничего не делая?
Съешь мыша – стань настоящим клавишником!
- John Doe
- Бюрократ
- Posts: 13851
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 428 times
- Contact:
Re: FIN — Fix Incorrect Names
Не стоит мудрить. Надо молча обрезать пока не останется ".."
Path\.. это кому вообще понадобиться такое?
Опционально можно сделать запрос на изменение.
Path\.. это кому вообще понадобиться такое?
Опционально можно сделать запрос на изменение.