Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Иероглифы вместо русского текста в DBGrid


Автор: Vstanka 20.8.2013, 13:46
Имеется старый проект, который необходимо перевести на Embarcadero C++ Builder XE, БД на Sybase, для отображения данных используются либо компонент TDBGrid, либо сторонний TDBGridView. Дело в том, что на клиенте русские символы в таблицах отображаются иероглифами, хотя кодировка БД и клиента одна - cp1251. Причем, в дебаге я вижу, что из БД пришел русский текст. 
Т.е. на событие OnGetCellText получаю: 

Код

AnsiString Value =  QGV->Fields->Fields[Cell.Col]->AsAnsiString;


В Watch листе вижу что все OK, русский текст, но в итоге в самой таблице отображаются иероглифы..

Вроде, это происходит из-за того, что Embarcadero заточен больше на работу с UnicodeString. Не могу найти, как решить проблему отображения. В таблице Font->Charset установлен DEFAULT_CHARSET, пробовала поставить RUSSIAN_CHARSET - не помогает..

Автор: Vstanka 23.8.2013, 15:44
Проблема решена: в старом проекте в метод OnGetCellText передавался параметр AnsiString, а в Embarcadero C++ Builder XE требуется UnicodeString. Поменяла на UnicodeString, и вуаля, все работает. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)