Page 5 of 9

Re: FIN — Fix Incorrect Names

Posted: Sun 29 Aug, 2010 17:16
by John Doe

Latest post of the previous page:

Не стоит мудрить. Надо молча обрезать пока не останется ".."
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\.. это кому вообще понадобиться такое?
Ну например ..\.. вполне может понадобиться.

Re: FIN — Fix Incorrect Names

Posted: Mon 30 Aug, 2010 03:37
by John Doe
Действительно...

Re: FIN — Fix Incorrect Names

Posted: Mon 30 Aug, 2010 04:09
by Kildor
Так, а path/second/.. во что превратится? Хотелось бы в корректное path (а откуда может проявиться — например из макроса, где чтоб не создавать неестественный интеллект, просто работать влоб).

Re: FIN — Fix Incorrect Names

Posted: Mon 30 Aug, 2010 04:16
by John Doe
Kildor wrote:Так, а path/second/.. во что превратится? Хотелось бы в корректное path
Это как?
Kildor wrote:(а откуда может проявиться — например из макроса, где чтоб не создавать неестественный интеллект, просто работать влоб).
Надо предусмотреть возможность "отключения" плагина. Например, если диалог закрывается не по Enter, а по Ctrl-Enter, или по хоткею.
Или предлагайте.

Re: FIN — Fix Incorrect Names

Posted: Mon 30 Aug, 2010 04:54
by Тигрёнок
Shmuel wrote:У меня подозрение, что странное поведение DM_SETDLGITEM объясняется модификацией плагином блока памяти, на которую указывает PtrData.
Это подозрение ошибочно. Я попробовал сделать копию и издеваться над ней - результат тот же: пустая строка в PtrData тупо игнорируется.
Shmuel wrote:PtrData - это указатель типа const wchar_t*, видимо так делать нельзя.
Это ещё почему? Far заливает содержимое PtrData в память сразу после конца структуры FarDialogItem (собственно говоря, для этого и приходится сначала выяснять объём потребной памяти, который зависит от длины строки). Далее - это уже целиком и полностью моя строка.
Shmuel wrote:Поэтому лучше было бы воспользоваться DM_SETTEXT.
А вот это - да! Работает корректно. Переделаю. Мерси!

Re: FIN — Fix Incorrect Names

Posted: Mon 30 Aug, 2010 04:57
by Тигрёнок
Kildor wrote:Так, а path/second/.. во что превратится?
Начиная с v1.2 останется без изменений.
Kildor wrote:Хотелось бы в корректное path
Я даже не буду спрашивать, а как плагину догадаться, что Вы хотите убить всё, что правее. Но скажите мне, а на хрена такие грабли разбрасывать?

Re: FIN — Fix Incorrect Names

Posted: Mon 30 Aug, 2010 05:17
by Тигрёнок
John Doe wrote:Надо предусмотреть возможность "отключения" плагина.
Вообще-то он замечательно "отключается", если имя взято в кавычки. Ну, для путей ещё можно лепить в конец косую черту.
John Doe wrote:Например, если диалог закрывается не по Enter, а по Ctrl-Enter, или по хоткею.
Это идеологически неправильно. Если отрабатывается событие, то именно событие, а не способ, которым оно возникло. Пользователь мог и мышкой кликнуть, и макрос вызвать, эмулирующий нажатие клавиши... На каждый чих не наздравствуешься.
Кстати, сейчас отрабатывается закрытие диалога, в т.ч. - отмена. Пофиксю для отработки исполнения.

Re: FIN — Fix Incorrect Names

Posted: Mon 30 Aug, 2010 05:26
by Kildor
> Я даже не буду спрашивать, а как плагину догадаться, что Вы хотите убить всё, что правее. Но скажите мне, а на хрена такие грабли разбрасывать?
Вообще-то Я хочу чтоб плагин не трогал этот путь вовсе. Имелось в виду, что такой путь вполне валиден, и просто означает то что означает — .. — родительская папка, соответственно path/second/.. просто означает path/ (и как раз тут — никакого неестественного интеллекта не нужно ).
Просто Я криво написал в первом сообщении, сорри. ;)

> Начиная с v1.2 останется без изменений.
Вот это и правильно.

PS: и хорош меня размножать, задолбало уже.

Re: FIN — Fix Incorrect Names

Posted: Mon 30 Aug, 2010 05:28
by Shmuel
Тигрёнок wrote:Это подозрение ошибочно. Я попробовал сделать копию и издеваться над ней - результат тот же: пустая строка в PtrData тупо игнорируется.
Да, я уже тоже успел это проверить.
Тигрёнок wrote:Far заливает содержимое PtrData в память сразу после конца структуры FarDialogItem (собственно говоря, для этого и приходится сначала выяснять объём потребной памяти, который зависит от длины строки). Далее - это уже целиком и полностью моя строка.
Видимо так, но это не документировано. Указатель всё равно типа const.

Re: FIN — Fix Incorrect Names

Posted: Mon 30 Aug, 2010 07:12
by Shmuel
Тигрёнок wrote:если по DM_SETDLGITEM подаётся пустая строка, то оно просто не отрабатывается FAR'ом... Более того, если сделать несколько изменений, то в ответ на передачу после них пустой строки, они откатятся.
Установил, куда они откатываются: на последний элемент истории эдит-контрола. То-есть, если удалить последний (верхний) элемент в выпадающем списке (Shift-Del), то в дальнейшем откат произойдёт на тот элемент, который станет последним. Это конечно баг.

Re: FIN — Fix Incorrect Names

Posted: Mon 30 Aug, 2010 08:30
by Taciturn
Нельзя ли добавить в FixIncorrectNames.dll ресурс VersionInfo? Сейчас досрочно сложно узнать версию FIN, с VersionInfo станет гораздо проще.

Re: FIN — Fix Incorrect Names

Posted: Mon 30 Aug, 2010 08:54
by John Doe
DlgGuid.hpp wrote:// {431A2F37-AC01-4ecd-BB6F-8CDE584E5A03}
DEFINE_GUID(MoveFilesId,0x431a2f37,0xac01,0x4ecd,0xbb,0x6f,0x8c,0xde,0x58,0x4e,0x5a,0x3);

Re: FIN — Fix Incorrect Names

Posted: Mon 30 Aug, 2010 09:10
by Тигрёнок
John Doe wrote:
DlgGuid.hpp wrote:// {431A2F37-AC01-4ecd-BB6F-8CDE584E5A03}
DEFINE_GUID(MoveFilesId,0x431a2f37,0xac01,0x4ecd,0xbb,0x6f,0x8c,0xde,0x58,0x4e,0x5a,0x3);
Это какой-то секретный хедер или он или простым людЯм доступен? И вообще, от какого он билда? От 1662 или от более младших?