Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Embarcadero C++ Builder XE и русский текст из БД

Автор: Vstanka
Дата сообщения: 20.08.2013 21:14
Не могу найти решение. Имеется старый проект, который необходимо перевести на 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 - не помогает..
Автор: MGAlex
Дата сообщения: 20.08.2013 21:52
Для начала попробуйте создать новый проект, поместите на форму DBGrid и подключите к нему свою базу. Если все будет отображаться корректно, сравните свойства и посмотрите, где есть отличие.
Если же и в новом проекте будет отображаться иероглифами, посмотрите настройки ОС. Поробуйте запустить на другом ПК, как там будет отображаться.
Автор: Vstanka
Дата сообщения: 21.08.2013 17:26
Да, в новом проекте все ок. Буду искать, что не так..
Автор: MGAlex
Дата сообщения: 21.08.2013 17:49
Ну вот и славно. Такое бывает иногда. Откройте сразу 2 C++ и сверяйте свойства. Где-то либо шрифт не тот выставлен, либо кодировка не та.
Автор: Vstanka
Дата сообщения: 23.08.2013 15:31
Проблема решена, оказывается в старом проекте в метод OnGetCellText передается параметр типа AnsiString, а в Embarcadero необходимо передавать UnicodeString. Изменила на UnicodeString, и все встало на свои места.
Автор: MGAlex
Дата сообщения: 23.08.2013 15:37
Да, в XE проекте используется Unicode и при переводе старых проектов возникают проблемы. Сам с таким сталкивался.
Главное, что проблема решена.

Страницы: 1

Предыдущая тема: CxGrid ComboBox Items Add


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.