АПИ-3: DM_GET*TEXT*
- Alexey Samlyukov
- Posts: 1765
- Joined: Tue 15 Mar, 2005 17:28
- Been thanked: 7 times
- Contact:
АПИ-3: DM_GET*TEXT*
есть предложение убрать из АПИ DM_GETCONSTTEXTPTR и DM_GETTEXT, оставить одно DM_GETTEXTPTR
возражения?
возражения?
Last edited by Alexey Samlyukov on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: Изменён заголовок Темы
Reason: Изменён заголовок Темы
- DrKnS
- Posts: 6114
- Joined: Thu 04 Aug, 2005 06:44
- Location: Kyiv
- Has thanked: 12 times
- Been thanked: 426 times
Re: АПИ-3
DM_GETTEXTPTR в морг - плагин не имеет возможности передать размер буфера, фар пишет не глядя, это потенциальное падение.
DM_GETCONSTTEXTPTR тоже в морг, ибо возвращается указатель на критичные внутренние данные.
DM_GETCONSTTEXTPTR тоже в морг, ибо возвращается указатель на критичные внутренние данные.
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
Re: АПИ-3
Чем плох DM_GETCONSTTEXTPTR? Мне он симпатичен, лишний раз копировать не надо данные.
А в редакторе не указатели на критичные внутренние данные возвращаются для строк? Или и там копирование данных планируется? Не хотелось бы..
Это защитит от проблем? Может, конечно, в доле процента от общего числа возможных проблем, не более. Вот щас он есть. И где эти проблемы с критичными внутренними данными? О чем угодно можно на форуме и мантисе найти проблемы, но не эти.DM_GETCONSTTEXTPTR тоже в морг, ибо возвращается указатель на критичные внутренние данные.
А в редакторе не указатели на критичные внутренние данные возвращаются для строк? Или и там копирование данных планируется? Не хотелось бы..
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
Re: АПИ-3
Не думаю, что возврат живого указателя это плохо (в общем случае, в частных - да, может быть). Но в EditorGetString это сделано лучше, чем это делает DM_GETCONSTTEXTPTR. В EditorGetString пользователь получает const wchar_t * и если он пишет туда данные, то ему надо еще усилие приложить (и тогда сам дурак), иначе компилятор не даст. DM_GETCONSTTEXTPTR возвращает не пойми что, которое пользователь все равно будет приводить, может и к wchar_t *, тогда компилятор не помогает.
Может, DM_GETCONSTTEXTPTR не давить, как таковой, а трансформировать в более грамотный и безопасный вариант по типу возврата const wchar_t * в структуре?
Может, DM_GETCONSTTEXTPTR не давить, как таковой, а трансформировать в более грамотный и безопасный вариант по типу возврата const wchar_t * в структуре?
Last edited by NightRoman on Thu 23 Feb, 2012 12:55, edited 1 time in total.
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
Re: АПИ-3
С этим согласен. Но все же - не давить, а сделать его грамотнее и безопаснее. И без копирования данных. Если это не случай, где копирование необходимо, то зачем лишний раз копировать?DrKnS wrote:Я как раз об этом.
- Alexey Samlyukov
- Posts: 1765
- Joined: Tue 15 Mar, 2005 17:28
- Been thanked: 7 times
- Contact:
Re: АПИ-3
NightRoman
и чем это будет отличаться от DM_GETTEXT?Может, DM_GETCONSTTEXTPTR не давить, как таковой, а трансформировать в более грамотный и безопасный вариант по типу возврата const wchar_t * в структуре?
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
Re: АПИ-3
Встречное предложение - выкинуть все, кроме DM_GETCONSTTEXTPTR. А его сделать по типу EditorGetString.
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
Re: АПИ-3
Не будет лишнего копирования данных (разве DM_GETTEXT не копирует в буфер пользователя?). А для пользователя - возни с этим буфером (динамическим, полу-динамическим, и т.п.).Alexey Samlyukov wrote:и чем это будет отличаться от DM_GETTEXT?
- zg
- zero-gravity
- Posts: 6036
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 185 times
- Contact:
Re: АПИ-3: DM_GET*TEXT*
DM_GETTEXTPTR — выкидываем.
DM_GETTEXT — оставляем.
DM_GETCONSTTEXTPTR — оставляем с припиской, что данные актуальны только до передачи управления фару. получать данные от диалога после его закрытия через DM_GETTEXT — как-то черезчур.
DM_GETTEXTLENGTH — тоже выкидываем, так как SendDlgMessage(hDlg,DM_GETTEXT,…,0).
DM_GETTEXT — оставляем.
DM_GETCONSTTEXTPTR — оставляем с припиской, что данные актуальны только до передачи управления фару. получать данные от диалога после его закрытия через DM_GETTEXT — как-то черезчур.
DM_GETTEXTLENGTH — тоже выкидываем, так как SendDlgMessage(hDlg,DM_GETTEXT,…,0).
- Alexey Samlyukov
- Posts: 1765
- Joined: Tue 15 Mar, 2005 17:28
- Been thanked: 7 times
- Contact: