Oper01 |
Отправлено: 13.10.2006, 13:59 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 145
|
Здравствуйте.
Подключаюсь к базе dBase через BDE. Все русские буквы в гриде отображает кракозябрами.
Как решить проблему с досовской кодировкой ? |
|
Admin |
Отправлено: 13.10.2006, 14:26 |
|
Владимир
Группа: Администратор
Сообщений: 1190
|
Или настройки драйвера в BDE (LANGDRIVER)
или CharToOem() OemToChar()
|
|
Oper01 |
Отправлено: 13.10.2006, 14:31 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 145
|
Изменения в LANGDRIVER вообще ни к чему не приводят.
Подскажите как через OemToChar ?
Спасибо. |
|
AVC |
Отправлено: 13.10.2006, 14:32 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Открываю DBF в C++Builder 5. Туплю.
Русские поля в DBF
Сортировка Query, Сортировка Query ORDER BY |
|
Oper01 |
Отправлено: 16.10.2006, 07:38 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 145
|
Здравствуйте.
Функция OemToChar() тоже не помогает.
Что делать ? |
|
olegenty |
Отправлено: 16.10.2006, 07:54 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
а что уже сделано и не привело к требуемому результату?
|
|
Admin |
Отправлено: 16.10.2006, 08:01 |
|
Владимир
Группа: Администратор
Сообщений: 1190
|
+ свойство Transliterate в false
QUOTE | Подключаюсь к базе dBase через BDE. Все русские буквы в гриде отображает кракозябрами.
|
А через что не отражается кракозябликами ?
|
|
Oper01 |
Отправлено: 16.10.2006, 08:39 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 145
|
Изменения в LABGDRIVER в BDE не приводят к результату.
В поиске по форуму были рекомендации исправления в реестре nls1252 на 1251 не привело ни к чему.
Изменения в свойствах грида Font->Charset тоже не помогает.
OemToChar не помогает. (какие-то изменения есть, а всё равно не кирилица).
А отображается таблица нормально, если её открыть через NC встроенными средствами.
|
|
Arsa |
Отправлено: 16.10.2006, 09:17 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 77
|
Я знаю как тебе помочь!
У тебя бдэшка большая? Да, то сделай ее поменьше и выкладывай ее на форрум.
Посмотрим, что получется. |
|
olegenty |
Отправлено: 16.10.2006, 09:17 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
ну так значит кодовая страница твоих DBF = 866
значит и посредством LANGDRIVER можно ситуацией рулить, и ты делал это неправильно как-то. значит, и Oem2Char должно к требуемому результату приводить, и именно ты применил функцию как-то неверно
|
|
Oper01 |
Отправлено: 16.10.2006, 10:31 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 145
|
Не понимаю что не так делаю.
Прикладываю файл если у кого-то получится выделить на меня время.
Спасибо.
|
|
Admin |
Отправлено: 16.10.2006, 10:51 |
|
Владимир
Группа: Администратор
Сообщений: 1190
|
FoxPro
Transliterate оставляем по-умолчанию true.
TableType = ttFoxPro
в BDE: Diver — Native — FoxPro — Langdriver = dBASE RUS cp866
|
|
Admin |
Отправлено: 16.10.2006, 11:07 |
|
Владимир
Группа: Администратор
Сообщений: 1190
|
И вариант c OemToChar тоже работает.
Оставляем Langdriver для FoxPro прежним — 'ascii' ANSI
TableType = ttFoxPro
CODE |
// Oem To Char
AnsiString toANSI(const char *Text)
{
AnsiString str = Text;
OemToChar(Text, str.c_str());
return str;
}
//----------
// у текстового поля, которое должно отражаться без кракозябликов
void __fastcall TForm1::Table1IMJGetText(TField *Sender, AnsiString &Text,
bool DisplayText)
{
Text = toANSI(Table1IMJ->AsString.c_str());
}
//---------------------------------------------------------------------------
|
Какой из вариантов вам подходит — решайте сами, оба имеют и плюсы и минусы.
|
|
Oper01 |
Отправлено: 16.10.2006, 11:18 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 145
|
Спасибо за помощь.
А как вы поняли что нужно TableType = ttFoxPro ?
И с OemToChar воткнул, тоже всё нормально.
Спасибо ещё раз. |
|
Admin |
Отправлено: 16.10.2006, 11:32 |
|
Владимир
Группа: Администратор
Сообщений: 1190
|
QUOTE | А как вы поняли что нужно TableType = ttFoxPro ? |
FoxPro файлы базы данных имеют DBF-расширение.
Работал с ними.
|
|