АПИ-3: DM_GET*TEXT*

Разработка Far.
Post Reply
User avatar
Alexey Samlyukov
Posts: 1764
Joined: Tue 15 Mar, 2005 17:28
Been thanked: 7 times
Contact:

АПИ-3: DM_GET*TEXT*

Post by Alexey Samlyukov »

есть предложение убрать из АПИ DM_GETCONSTTEXTPTR и DM_GETTEXT, оставить одно DM_GETTEXTPTR
возражения?
Last edited by Alexey Samlyukov on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: Изменён заголовок Темы
User avatar
DrKnS
Posts: 5804
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 10 times
Been thanked: 343 times

Re: АПИ-3

Post by DrKnS »

DM_GETTEXTPTR в морг - плагин не имеет возможности передать размер буфера, фар пишет не глядя, это потенциальное падение.

DM_GETCONSTTEXTPTR тоже в морг, ибо возвращается указатель на критичные внутренние данные.
User avatar
NightRoman
Posts: 6034
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 20 times
Been thanked: 49 times
Contact:

Re: АПИ-3

Post by NightRoman »

Чем плох DM_GETCONSTTEXTPTR? Мне он симпатичен, лишний раз копировать не надо данные.
DM_GETCONSTTEXTPTR тоже в морг, ибо возвращается указатель на критичные внутренние данные.
Это защитит от проблем? Может, конечно, в доле процента от общего числа возможных проблем, не более. Вот щас он есть. И где эти проблемы с критичными внутренними данными? О чем угодно можно на форуме и мантисе найти проблемы, но не эти.

А в редакторе не указатели на критичные внутренние данные возвращаются для строк? Или и там копирование данных планируется? Не хотелось бы..
User avatar
NightRoman
Posts: 6034
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 20 times
Been thanked: 49 times
Contact:

Re: АПИ-3

Post by NightRoman »

Не думаю, что возврат живого указателя это плохо (в общем случае, в частных - да, может быть). Но в EditorGetString это сделано лучше, чем это делает DM_GETCONSTTEXTPTR. В EditorGetString пользователь получает const wchar_t * и если он пишет туда данные, то ему надо еще усилие приложить (и тогда сам дурак), иначе компилятор не даст. DM_GETCONSTTEXTPTR возвращает не пойми что, которое пользователь все равно будет приводить, может и к wchar_t *, тогда компилятор не помогает.

Может, DM_GETCONSTTEXTPTR не давить, как таковой, а трансформировать в более грамотный и безопасный вариант по типу возврата const wchar_t * в структуре?
Last edited by NightRoman on Thu 23 Feb, 2012 12:55, edited 1 time in total.
User avatar
DrKnS
Posts: 5804
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 10 times
Been thanked: 343 times

Re: АПИ-3

Post by DrKnS »

NightRoman wrote:DM_GETCONSTTEXTPTR возвращает не пойми что, которое пользователь все равно будет приводить, может и к wchar_t *
Я как раз об этом.
User avatar
NightRoman
Posts: 6034
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 20 times
Been thanked: 49 times
Contact:

Re: АПИ-3

Post by NightRoman »

DrKnS wrote:Я как раз об этом.
С этим согласен. Но все же - не давить, а сделать его грамотнее и безопаснее. И без копирования данных. Если это не случай, где копирование необходимо, то зачем лишний раз копировать?
User avatar
Alexey Samlyukov
Posts: 1764
Joined: Tue 15 Mar, 2005 17:28
Been thanked: 7 times
Contact:

Re: АПИ-3

Post by Alexey Samlyukov »

NightRoman
Может, DM_GETCONSTTEXTPTR не давить, как таковой, а трансформировать в более грамотный и безопасный вариант по типу возврата const wchar_t * в структуре?
и чем это будет отличаться от DM_GETTEXT?
User avatar
NightRoman
Posts: 6034
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 20 times
Been thanked: 49 times
Contact:

Re: АПИ-3

Post by NightRoman »

Встречное предложение - выкинуть все, кроме DM_GETCONSTTEXTPTR. А его сделать по типу EditorGetString.
User avatar
NightRoman
Posts: 6034
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 20 times
Been thanked: 49 times
Contact:

Re: АПИ-3

Post by NightRoman »

Alexey Samlyukov wrote:и чем это будет отличаться от DM_GETTEXT?
Не будет лишнего копирования данных (разве DM_GETTEXT не копирует в буфер пользователя?). А для пользователя - возни с этим буфером (динамическим, полу-динамическим, и т.п.).
User avatar
zg
zero-gravity
Posts: 5878
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 158 times
Contact:

Re: АПИ-3: DM_GET*TEXT*

Post by zg »

DM_GETTEXTPTR — выкидываем.
DM_GETTEXT — оставляем.
DM_GETCONSTTEXTPTR — оставляем с припиской, что данные актуальны только до передачи управления фару. получать данные от диалога после его закрытия через DM_GETTEXT — как-то черезчур.
DM_GETTEXTLENGTH — тоже выкидываем, так как SendDlgMessage(hDlg,DM_GETTEXT,…,0).
User avatar
Alexey Samlyukov
Posts: 1764
Joined: Tue 15 Mar, 2005 17:28
Been thanked: 7 times
Contact:

Re: АПИ-3: DM_GET*TEXT*

Post by Alexey Samlyukov »

ок.
Post Reply

Return to “Development”