О dbf-ке в досовской кодировки
Посоветуйте, как с ним бороться, только вот бегать по всему датасету и конвертировать в, из OEM чегото не хочу.
только вот бегать по всему датасету и конвертировать в, из OEM чегото не хочу.
А придется. :)
Ты лучше при выводе на экран конвертируй в ОЕМ, а при записи в базу - обратно в cp866. Базу переделывать лучше ненадо, тогда и старые (ДОСовские) программы смогут работать.
Да и что тут сложного - 33 русские буквы сконвертировать конструкцией switch-case-default?
Тут получилась такая штука, что приходится конектится и брать (а может быть и вносить) данные в старую DBF-ку в досовской кодировки (данные в ней периодически обновляются). Через BDE конектится нормально, да вот только вместо букв получается нечто.
Посоветуйте, как с ним бороться, только вот бегать по всему датасету и конвертировать в, из OEM чегото не хочу.
Чтобы получить дбф из-под ДОС кодировки необходимо программно или через BDE-admin установить для данного типа драйвера в свойстве LENGDRIVER кодировку - dBASE RUS cp866. И база будет читаться/писаться без проблем.
Т.е. заходишь в Панель управления/ BDE Administrator, открываешь закладку конфигурация, выбираешь нужный драйвер - к примеру FoxPro и устанавливаешь вышеуказанную кодировку. Если работать программно - используй
TSession->ModifyDriver(AnsiString ИмяДрайвера,TStrings Список параметров);