![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
Fedia |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 465 Регистрация: 2.8.2006 Где: первым встречаю р ассвет Репутация: 8 Всего: 13 |
Я разобрался. Спросил у более опытного коллеги на работе, он удивился, что я до сих пор не в курсе, как эта проблема устраняется, и рассказал мне вот что:
1. Запускаем regedit. 2. Производим поиск значений параметров, содержащих 1252. 3. Заменяем эти значения на 1251. 4. Перезагружаемся. 5. Проводим тест и радуемся ![]() -------------------- Накануне решающей битвы Я иду, и надеждою зыбкой Озаряется эта дорога, Я мечтаю увидеть улыбку На лице победившего Бога… |
|||
|
||||
forever |
|
|||
Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 3.9.2006 Репутация: нет Всего: нет |
Fedia,
Так это стародавняя проблема. Вот не думал, что она и здесь скажется. Но не нужно менять все вхождения 1252 - достаточно HKLM\SYSTEM\CurrentControlSet\Control\Nls\CodePage\1252 заменить c_1252.nls на c_1251.nls Радость омрачается тем, что на других компах скомпиллированные у меня проги ведут себя по прежнему: у кого были ??? - так и остались, у кого было нормально - тоже без изменений. |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Fedia, Это решение давно извесно и было выложено н форуме, но это не выход. Тем более у него бывают побочные эффекты связаные с использованием других языков. У некоторых установлено по 3 языка и больше, а программа должна нормально функционировать на любой машине. Проблему предлогаю решить установкой локального (внутрипрограмного) перехватчика сообщеня WM_PASTE, который будет ловить сообщения до передачи их соотв. компоненту.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Romero |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 17.6.2005 Репутация: нет Всего: 1 |
Как я понимаю, проблема так и не решена до конца.
Как же заставить текст правильно копироваться в буфер? Прога, скомпиленная в D6, имеет Memo с установленным RUSSIAN_CHARSET, и строка SetThreadLocale(1049) прописана. Однако, при запуске на 2000 винде скопированный ИЗ ОКНА (а не В ОКНО) программы текст вставляется в блокнот коряво. То же приложение нормально ведет себя на ХР (возможно, дело не в версиях винды, а в локализациях, но это не суть вопроса). |
|||
|
||||
mai62 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 27.2.2006 Репутация: 1 Всего: 3 |
У меня тоже были проблемы с кодировкой при копировании в буфер. Где-то нашел такой рецепт, у меня работает.
LangManager.LanguageID - это у меня переключатель языка интерфейса от DKLang. |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Пробовали при копировании и при вставке текста переключатель языков винды установить в положение "RU"? Это позволяет винде правильно определить таблицу перекодировки юникод -> Ansi. Иначе прийдется перехватывать вставку текста и самостоятельно конвертировать юникод в анси. Это вылечить невозможно, так этими вещами управляет винда, а не сам делфи. Тоже самое происходит, например, и в редакторе от Microsoft Visual C++ 6. Тут лечить нужно программистов Microsoft от криворукости. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Romero |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 17.6.2005 Репутация: нет Всего: 1 |
Хм, с RichEdit таких проблем не наблюдается. При этом никаких танцев с бубном, строкой SetThreadLocale(1049) и установкой RUSSIAN_CHARSET не требуется. Странно!
|
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Romero, Ну он передает информацию в буфер обмена в формате RTF, где к для каждого символа можно узнать сопроводительную информацию, т.е. шрифт, размер, цвет, абзац, выравнивание, возможно еще и номер таблицы.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
EvilsInterrupt |
|
|||
Executables research ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1019 Регистрация: 14.7.2007 Где: Железнодорожный, МО, Россия Репутация: 3 Всего: 9 |
Да, занятная тема ;) В вашем полку прибыло ;)
Вобщем приведу сразу код:
Суть этой функции в обработчике попуп-меню окна лога закинуть в буфер обмена выделенное в VTV нод с событием. Как видно из кода, я из формы с эбаутом достаю версию и время билда, он отображается нормально! А вот когда копируется в буфер обмена, то все его русские буквы становятся, даже не вопросами, а какиме-то крякозябрами ;( Этот же код, на другой ЭВМ отрабатывает на ура, есно после сборки на той машине. Все что оговаривалось выше не помогает, а правка в реестре мне не подойдет, т.к. я пишу мультиязычную программу. Пока вот хочу попробовать метод от mai62, но вдруг еще какие-нибудь мысли есть? Это сообщение отредактировал(а) EvilsInterrupt - 13.11.2007, 19:53 |
|||
|
||||
EvilsInterrupt |
|
|||
Executables research ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1019 Регистрация: 14.7.2007 Где: Железнодорожный, МО, Россия Репутация: 3 Всего: 9 |
Все, проблему решил, увидел строки в DRKB:
Сразу стало понятно, что товарищь mai62 предложил хороший способ ;) Спасибо |
|||
|
||||
WaReZMEN |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 683 Регистрация: 9.6.2006 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: 3 |
http://forum.vingrad.ru/forum/topic-180473.html
Добавлено через 9 минут и 1 секунду а вот у меня какраз токи в 2006. Messegedlg показывает вопросы и что интересно из 50 компьютеролв тока на одном... |
|||
|
||||
aktuba |
|
|||
![]() Смышленный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1915 Регистрация: 24.4.2006 Где: Планета Земля Репутация: 16 Всего: 38 |
Может там винда не русская стоит? -------------------- ![]() |
|||
|
||||
EvilsInterrupt |
|
|||
Executables research ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1019 Регистрация: 14.7.2007 Где: Железнодорожный, МО, Россия Репутация: 3 Всего: 9 |
aktuba, Можешь подскажешь выход из такой ситуации:
Если у меня выбрана русская раскладка, то в буфер обмена копируется и последующая вставка куда-либо(к примеру сюда в окно поста сообщения на форум), то все отображается отлично и никакой крякозябрины. Но если же я выберу английскую раскладку, то после копирования в буфер и последующей вствки куда-либо(к примеру сюда в окно поста сообщения на форум), то крякозябры ;( Я конечно догадываюсь,что англичание не должны шарить о существовании русского языка. Но как пользователю же пофиг на это! ;) Может имеет смысл насильно перекодировать на русский в самом буфере обмена, если конечно выбран русский язык или какой-либо другой, к примеру китайский ? |
|||
|
||||
EvilsInterrupt |
|
|||
Executables research ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1019 Регистрация: 14.7.2007 Где: Железнодорожный, МО, Россия Репутация: 3 Всего: 9 |
Проблема решена, MetalFan подсказал.
ведь по идее: |
|||
|
||||
Ymnuk |
|
|||
Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 4.2.2008 Где: Ставрополь Репутация: нет Всего: нет |
А подскажите такой момент пожалуста.
Есть сервер с DB2 UDB 8.2. Кодировка стоит 1251 и в программе весь русский отображается прекрасно на всех компьютера без исключений, но есть 2 компа, на которых стоит Novel-клиент. На них весь русский язык отображается нормально, кроме выгрузки данных в Excel. Сам файл-шаблон отображается нормально, а вот выгруженные данные отображаются непонятной кодировкой (я так и не выяснил какая кодировка). При использовании Shell API и выборе директории с русским названием появляется та же непонятная кодировка. Может кто знает как исправить это в программе? |
|||
|
||||
![]() ![]() ![]() |
Правила форума "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. |