Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Embarcadero C++ Builder XE и русский текст из БД

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

Vstanka

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не могу найти решение. Имеется старый проект, который необходимо перевести на Embarcadero C++ Builder XE, БД на Sybase, для отображения данных используются либо компонент TDBGrid, либо сторонний TDBGridView. Дело в том, что на клиенте русские символы в таблицах отображаются иероглифами, хотя кодировка БД и клиента одна - cp1251. Причем, в дебаге я вижу, что из БД пришел русский текст.  
Т.е. на событие OnGetCellText получаю:  
 
AnsiString Value =  QGV->Fields->Fields[Cell.Col]->AsAnsiString;
 
В Watch листе вижу что все OK, русский текст, но в итоге в самой таблице отображаются иероглифы..
 
В таблице Font->Charset установлен DEFAULT_CHARSET, пробовала поставить RUSSIAN_CHARSET - не помогает..  

Всего записей: 7 | Зарегистр. 20-08-2013 | Отправлено: 22:14 20-08-2013
MGAlex



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Для начала попробуйте создать новый проект, поместите на форму DBGrid и подключите к нему свою базу. Если все будет отображаться корректно, сравните свойства и посмотрите, где есть отличие.
Если же и в новом проекте будет отображаться иероглифами, посмотрите настройки ОС. Поробуйте запустить на другом ПК, как там будет отображаться.

Всего записей: 1855 | Зарегистр. 12-10-2007 | Отправлено: 22:52 20-08-2013
Vstanka

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Да, в новом проекте все ок. Буду искать, что не так..

Всего записей: 7 | Зарегистр. 20-08-2013 | Отправлено: 18:26 21-08-2013
MGAlex



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ну вот и славно. Такое бывает иногда. Откройте сразу 2 C++ и сверяйте свойства. Где-то либо шрифт не тот выставлен, либо кодировка не та.

Всего записей: 1855 | Зарегистр. 12-10-2007 | Отправлено: 18:49 21-08-2013
Vstanka

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Проблема решена, оказывается в старом проекте в метод OnGetCellText передается параметр типа AnsiString, а в Embarcadero необходимо передавать UnicodeString. Изменила на UnicodeString, и все встало на свои места.

Всего записей: 7 | Зарегистр. 20-08-2013 | Отправлено: 16:31 23-08-2013
MGAlex



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Да, в XE проекте используется Unicode и при переводе старых проектов возникают проблемы. Сам с таким сталкивался.
Главное, что проблема решена.

Всего записей: 1855 | Зарегистр. 12-10-2007 | Отправлено: 16:37 23-08-2013 | Исправлено: MGAlex, 16:37 23-08-2013
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Embarcadero C++ Builder XE и русский текст из БД


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru