Каким образом приложение может получить символ ещё длиннее?

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: Каким образом приложение может получить символ ещё длиннее?

пираты карибского моря онлайн в хорошем качестве

Patricktenda » 11 июн 2017, 00:05

Изображение

пираты карибского моря онлайн в хорошем качестве ТуТ u.to/Dsv8Dw
Исчерпавший свою удачу капитан Джек Воробей обнаруживает, что за ним охотится его старый неприятель, ужасный капитан Салазар и его призрачные пираты.
Они только что сбежали из Дьявольского треугольника и намерены уничтожить всех пиратов, включая Джека. Рекомендую пираты карибского моря онлайн в хорошем качестве
Поможет спастись лишь могущественный артефакт — трезубец Посейдона, который дарует своему обладателю полный контроль над морями.

Re: Каким образом приложение может получить символ ещё длиннее?

Сионист » 17 дек 2015, 15:50

когда им серьезно угрожала OS/2 Warp от IBM.
Тем более.

Re: Каким образом приложение может получить символ ещё длиннее?

Absurd » 17 дек 2015, 11:42

То то им пришлось делать костыль для конкретной игры, когда выяснилось, что эта игра учитывает их старый ни где не описанный, а в новой версии исправленный глюк и глючит из-за исправления глюка. Теперь винда проверяет, кто к ней обращается за системными функциями и если та самая игра, то специально глючит во избежание глюка.
Это было в момент становления Win95, когда им серьезно угрожала OS/2 Warp от IBM. Поддержка старых приложений под ДОС типа игры СимСити о которой идет речь (не СимСити 2000, а старый СимСити под DOS4GW + SVGA) была критическим фактором удержания пользовательской базы. Только это было ровно 20 лет назад, да. С тех пор ядро у ОС от Майкрософт сменилось уже как минимум раза два или три (ЕМНИП NT, а затем Vista).

Re: Каким образом приложение может получить символ ещё длиннее?

Сионист » 17 дек 2015, 10:29

Ты уверен?
Ага. Для своего случая.
По поводу этого ничего не могу сказать. Нужно тестить.
Зачем? Всего лишь выбрать в свойствах проекта компилятор нужной разрядности.
Microsoft можно ругать сколько угодно и за что угодно, но документацию к API они содержат всегда в up-to-date состоянии, так как они получаются за это деньги.
То то им пришлось делать костыль для конкретной игры, когда выяснилось, что эта игра учитывает их старый ни где не описанный, а в новой версии исправленный глюк и глючит из-за исправления глюка. Теперь винда проверяет, кто к ней обращается за системными функциями и если та самая игра, то специально глючит во избежание глюка.

Re: Каким образом приложение может получить символ ещё длиннее?

Romeo » 17 дек 2015, 10:17

Сионист писал(а): А что надо передать в четвёртый параметр WideCharToMultiByte в случае преобразования одной суррогатной пары? Количество символов, то есть 1, или количество wchar_t, то есть 2?
MSND писал(а): cchWideChar [in]
Size, in characters, of the string indicated by lpWideCharStr. Alternatively, this parameter can be set to -1 if the string is null-terminated. If cchWideChar is set to 0, the function fails.
If this parameter is -1, the function processes the entire input string, including the terminating null character. Therefore, the resulting character string has a terminating null character, and the length returned by the function includes this character.
If this parameter is set to a positive integer, the function processes exactly the specified number of characters. If the provided size does not include a terminating null character, the resulting character string is not null-terminated, and the returned length does not include this character.
Сионист писал(а):Кстати, в WPARAM 8 байт.
Ты уверен? По поводу этого ничего не могу сказать. Нужно тестить.
Сионист писал(а):Так мало ли как он поддерживается. Может приходят два сообщения подряд с половинками суррогатной пары?
Если бы это было так, то в спецификации было бы об этом сказано. Microsoft можно ругать сколько угодно и за что угодно, но документацию к API они содержат всегда в up-to-date состоянии, так как они получаются за это деньги. Привыкни верить MSDN, а не задаваться бесполезными вопросами "а что если...".

Re: Каким образом приложение может получить символ ещё длиннее?

Сионист » 17 дек 2015, 10:13

Так мало ли как он поддерживается. Может приходят два сообщения подряд с половинками суррогатной пары?

Re: Каким образом приложение может получить символ ещё длиннее?

Romeo » 17 дек 2015, 09:55

Ну а как по-другому, чёрт побери? Если UTF-16 поддерживается по спецификации, а так же там указано, что символ содержится в wParam?

Re: Каким образом приложение может получить символ ещё длиннее?

Сионист » 17 дек 2015, 09:51

То есть суррогатная пара целиком в WPARAM? А что надо передать в четвёртый параметр WideCharToMultiByte в случае преобразования одной суррогатной пары? Количество символов, то есть 1, или количество wchar_t, то есть 2? И как её отличить? Кстати, в WPARAM 8 байт.

Re: Каким образом приложение может получить символ ещё длиннее?

Romeo » 17 дек 2015, 09:49

А вы short от long отличаете? В long как раз 4 байта. А wParam как раз типа long. Я что, для кого-то другого копирую сюда выжимки из MSDN, где сказано, что сообщение поддерживает UTF-16?

Re: Каким образом приложение может получить символ ещё длиннее?

Сионист » 17 дек 2015, 09:46

Вы два байта от анси не отличаете? UTF-16 тоже не равномерный, в нём есть символы по два байта, а есть символы, обозначаемые суррогатными парами по четыре байта. Вопрос: как получить символ, код которого не лезет в два байта? Не от своей экранной кнопки, там как раз просто: отправить WM_UNICHAR. А с клавиатуры?

Вернуться к началу