| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > В ShowMessage,MessageDlg кракозябры |
| Автор: BARCA132 28.12.2009, 16:04 |
| Подскажите, что это может быть? На некоторых ПК, программа при выводе в Hint и в ShowMessage,MessageDlg русские буквы показываются кракозябры. ![]() ![]() Винда везде WINXP SP3 RUS. Региональные настройки стоят все РУССКИЕ, Россия (Панель управления, Язык и региональные стандарты). Это косяк в Дельфи? Или что-то в операционке не хватает? Спасибо. |
| Автор: Alexeis 28.12.2009, 16:08 |
| BARCA132, шрифт может не иметь символов кирилицы. |
| Автор: BARCA132 28.12.2009, 16:25 |
И что это значит? Hint,ShowMessage,MessageDlg там же нигде выставить никакой шрифт нельзя?!!! На половине ПК все нормально, проблема только на некоторых.... Что делать? |
| Автор: Poseidon 28.12.2009, 16:34 |
| А если попробовать давно забытую ветку реестра HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Nls\Codepage и поправить там "1250"="cp_1251.nls" "1251"="cp_1251.nls" "1252"="cp_1251.nls" и после перезагрузки проверить. |
| Автор: Akella 28.12.2009, 17:01 | ||||
И ещё. Вместо MessageDlg советую использовать MessageBox.
|
| Автор: Alexeis 28.12.2009, 17:02 |
| Poseidon, на чужих машинах так делать нельзя. Лучше вызывать SetThreadLocale для каждого потока системы. Эффект должен получиться тем же. |
| Автор: BARCA132 28.12.2009, 17:21 |
Обязательно сегодня вечером проверю... Сообщу резалт. Сэнкс... Вот только на ПК, где все ОК, в реестре стоит "1250"="cp_1250.nls" "1251"="cp_1251.nls" "1252"="cp_1252.nls" и все нормально отображается. Это так и должно быть? Ну я это знаю. Ну а причем тут замена одного компонента на другой? Ведь речь явно в кодировках... А Hint у всех компонентов на что заменить? Опять же - это уход от проблемы. А с Hint что делать? |
| Автор: Alexeis 28.12.2009, 17:35 |
Ничуть, это скажет системе что преобразование юникода в кириллицу следует делать с локалью 1251. Кроме того надеюсь у вас везде чарсет стоит кириллистический? |
| Автор: Akella 29.12.2009, 01:17 |
Да, не особо к вопросу с кодировками относится. Просто подсказка в сторону использования диалогов с локализованными надписями на кнопках |
| Автор: BARCA132 29.12.2009, 15:34 | ||||
Ну, дык, в MessageDlg синтаксис такой же... if MessageDlg('Добавить?',mtWarning, [mbYes,mbNo],0)=mrNo then То есть мне кажется, это не спасет отца русской демократии... |
| Автор: Snowy 29.12.2009, 15:46 |
| Разница огромная MessageBox - системные диалоги - они локализованы вместе с самой виндой. А недоразумение под названием MessageDlg вообще непонятно зачем сделано. Генерируется на основе TForm и поддаётся локализации только при помощи бубна и правки ресурсов. Какой смысл был это городить - не понятно. |
| Автор: BARCA132 29.12.2009, 16:12 | ||
Аааа не знал... Ок. Буду использовать MessageBox... Всем спасибо. Вопрос закрыт. |
| Автор: Akella 29.12.2009, 16:32 |
При чём здесь синтаксис Добавлено через 36 секунд Snowy, |