Page 4 of 9

Re: FIN — Fix Incorrect Names

Posted: Thu 26 Aug, 2010 19:10
by DrKnS

Latest post of the previous page:

Так, проясняем.

StructSize всегда ставит тот, кто аллоцирует структуру, ибо только он знает её размер.

Соответственно, для DM ставит плагин, для DN - фар.

Везде, где надо - поправлено.

Re: FIN — Fix Incorrect Names

Posted: Thu 26 Aug, 2010 19:18
by Тигрёнок
DrKnS wrote:StructSize всегда ставит тот, кто аллоцирует структуру, ибо только он знает её размер.
Соответственно, для DM ставит плагин, для DN - фар.
Во! Теперь я всё понял. Спасибо!
DrKnS wrote:StructSize Везде, где надо - поправлено.
Радует и обнадёживает...

Re: FIN — Fix Incorrect Names

Posted: Fri 27 Aug, 2010 02:40
by NightRoman
Соответственно, для DM ставит плагин, для DN - фар.
Хорошо, что разобрались.

Не совсем понятно, зачем это делает Фар в DN, какой практический смысл?

Re: FIN — Fix Incorrect Names

Posted: Fri 27 Aug, 2010 08:22
by chupakabra
NightRoman wrote:Не совсем понятно, зачем это делает Фар в DN, какой практический смысл?
Чтобы плагин знал версию структуры?

Re: FIN — Fix Incorrect Names

Posted: Fri 27 Aug, 2010 08:46
by NightRoman
chupakabra
Чтобы плагин мог быть совместим со старыми версиями Фара? Если да, то это не очень хороший дизайн. Во-первых, в принципе не хорошо, что плагин поставлен в такую ситуацию, в нормальном АПИ этого желательно избегать. Во-вторых, это решается обновлением Фара, что всегда возможно в отличие от обновления плагина, автор которого пропал или забил на плагин.

Re: FIN — Fix Incorrect Names

Posted: Fri 27 Aug, 2010 08:54
by DrKnS
Для единообразия.
Размер там без надобности, но структура используется одна и та же для ввода и для вывода, так что пусть уж лучше там будет что-то осмысленное.
Если применения ему не видишь - просто игнорируй его.

Re: FIN — Fix Incorrect Names

Posted: Sun 29 Aug, 2010 13:30
by Shmuel
Тигрёнок
Не могу понять по исходникам, почему плагин правильно работает с путём .. (две точки) при копировании и переносе, вроде как он эти точки удаляет? Просвети, пожалуйста.

Re: FIN — Fix Incorrect Names

Posted: Sun 29 Aug, 2010 14:03
by John Doe
Может исходники не самые свежие?

Re: FIN — Fix Incorrect Names

Posted: Sun 29 Aug, 2010 14:11
by Тигрёнок
Shmuel wrote:Не могу понять по исходникам, почему плагин правильно работает с путём .. (две точки) при копировании и переносе, вроде как он эти точки удаляет? Просвети, пожалуйста.
Сам не знаю...
Там очевидная ошибка (мерси!), но если по DM_SETDLGITEM подаётся пустая строка, то оно просто не отрабатывается FAR'ом... Более того, если сделать несколько изменений, то в ответ на передачу после них пустой строки, они откатятся.

Re: FIN — Fix Incorrect Names

Posted: Sun 29 Aug, 2010 14:14
by Shmuel
Исходники - свежие. Поигрался сам, вот что заметил:

1. Если использовать DM_SETDLGITEM, как делает плагин, то почти всегда файл копируется/переносится в родительскую папку, несмотря на удаление точек. Но был один случай, когда поведение было ожидаемым - варнинг "Incorrect target list".

2. Если же использовать DM_SETTEXT - ничего не переносится/не копируется, выдаётся варнинг.

Так что похоже, что это Фар чудит (хотя в плагине ситуация с .. в конце имени тоже должна была бы особо обрабатываться).

Re: FIN — Fix Incorrect Names

Posted: Sun 29 Aug, 2010 15:55
by Shmuel
Ещё заметил, что это странное поведение DM_SETDLGITEM имеет место в диалогах CopyFilesId, HardSymLinkId, но не наблюдается в FileOpenCreateId, FileSaveAsId, MakeFolderId. Хотя возможно, что это просто игра случая.

Re: FIN — Fix Incorrect Names

Posted: Sun 29 Aug, 2010 17:04
by Тигрёнок
Shmuel wrote:в плагине ситуация с .. в конце имени тоже должна была бы особо обрабатываться
Это понятно. Тем более, что Path\.. сейчас превращается в просто Path, что вообще никуда не годится...
Однако непонятно, что делать. Во что уместно превращать, скажем, путь из трёх точек или две точки с пробелом в конце? Или просто выдавать предупреждение, ничего не делая?

Re: FIN — Fix Incorrect Names

Posted: Sun 29 Aug, 2010 17:16
by John Doe
Не стоит мудрить. Надо молча обрезать пока не останется ".."
Path\.. это кому вообще понадобиться такое?

Опционально можно сделать запрос на изменение.

Re: FIN — Fix Incorrect Names

Posted: Sun 29 Aug, 2010 19:43
by Тигрёнок
Ну, я пофиксил, как мог.
Варианты .. и Path\.. для диалогов копирования, перемещения с создания ссылки должны отрабатываться правильно.
Плагин по-прежнему партизанит - не задаёт вопросов, не выдаёт предупреждений.
Если, отъедая по одному символу с конца от имени, его так и не удаётся сделать корректным, то плагин его и не меняет.

Re: FIN — Fix Incorrect Names

Posted: Sun 29 Aug, 2010 20:11
by Shmuel
Тигрёнок
У меня подозрение, что странное поведение DM_SETDLGITEM объясняется модификацией плагином блока памяти, на которую указывает PtrData. PtrData - это указатель типа const wchar_t*, видимо так делать нельзя. Поэтому лучше было бы воспользоваться DM_SETTEXT.

Re: FIN — Fix Incorrect Names

Posted: Sun 29 Aug, 2010 20:27
by Shmuel
John Doe wrote:Path\.. это кому вообще понадобиться такое?
Ну например ..\.. вполне может понадобиться.