![]() |
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]() ![]() ![]() |
|
WaReZMEN |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 683 Регистрация: 9.6.2006 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: 3 |
Не вы скажите как исправит чтоб showmessege не показывал "???? ??????????"
|
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 34 Всего: 459 |
Можно до посинения вопить, но такие проблемы по-любому будут для контролов созданных при помощи функции CreateWindowA/CreateWindowExA и в делфи и вижаулке шестой и во многих других мемах. в системах NT анси строки приводятся к юникоду, а при получении от них результата (если это функции оканчивающиеся а "А") происходить обратное преобразование Юникод -> Анси, вот тут то и происходят все проблемы, поскольку в юникоде букав многа а в анси мало, потому как их интерпретировать зависит от чарсета. Чарсет определяет какой же символ будет у символа с данным кодом. 1) При работе с буфером обмена чарсет определяется текущим языком. 2) В мемо и др. компонентах чарсет можно установить (свойство Font). Если чарсет не верный, то вместо русских символов будут символы другой кодировкой. Если в системе нет такого РУССКОГО шрифта, то винде рисовать будет нечего, в лучшем случае она попытается заменить его другим кирилистическим шрифтом, но не всегда. SetThreadLocale устанавливает дефолтную локаль для преобразования юникод -> Анси, это тоже что и установка в реестре. 3) ShowMessage это тоже VCL форма, т.е. Windows окно, потому решение см. 2 -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 31 Всего: 484 |
||||
|
||||
Akella |
|
||||||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 8 Всего: 329 |
RUSSIAN_CHARSET Добавлено через 3 минуты и 24 секунды
а я не работаю с буфером обмена Добавлено через 5 минут и 49 секунд Значит такая идея возникла: 1. вначале работы процедуры запоминаем язык 2. переключаемся на русский программно 3. выполняем процедуру 4. переключаемся обратно Недостаток: если нет русского, могут будут проблемы, может быть даже AV из-за того, что нет русского. У кого-нибудь ещё есть предложения? Добавлено через 6 минут и 29 секунд
так установлено ещё в дизайнере при проектировании приложенияч |
||||||
|
|||||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 34 Всего: 459 |
Akella, попробуй шрифт сменить на какой-нибудь стандартный.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 8 Всего: 329 |
у меня так получилось, используя LoadKeyboardLayout
Добавлено @ 10:37 т.е. по идее если даже нет в системе русского, то LoadKeyboardLayout загрузит и активирует, возможно что только для данного сеанса программы, а это именно то, что нам и нужно так можно узнать список установленных раскладок Это сообщение отредактировал(а) Akella - 14.11.2007, 10:40 |
|||
|
||||
Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 15 Всего: 76 |
-------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 8 Всего: 329 |
кстати сам шрифт, используемый в контроле тоже влияет, я вот вышеописанный пример попробовал с разными, нормально работает с Lucidia Console
Добавлено через 49 секунд Rennigth, ![]() ![]() |
|||
|
||||
Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 15 Всего: 76 |
Как-то так:
-------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 8 Всего: 329 |
Вот ещё пример вставки текста из буфера обмена. Очень похож на предыдущий.
Это сообщение отредактировал(а) Akella - 18.11.2007, 16:09 |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 8 Всего: 329 |
при объявлении строковых типом можно ещё воспользоваться не String, а Widestring
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |