powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / C++ BUILDER, кодировка в DBF
3 сообщений из 3, страница 1 из 1
C++ BUILDER, кодировка в DBF
    #34446176
Mishgan_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здрасте! У меня проблема! Нужно программно перевести DBF файл из кодировки дос в виндовз ... блин везде искал , но ничего путного не нашел кроме готовых прог... помогите!!!
...
Рейтинг: 0 / 0
C++ BUILDER, кодировка в DBF
    #34446632
m_vfp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1) В заголовке таблицы (29 байт) лежит кодовая страница.
Russian Windows - 0xC9;
Russian MS-DOS - 0x65;

Попробуй поменять 0x65 на 0xC9.

2) Законнектиться к таблице через VFP OLE DB и запросом символьные поля перевести в
другую кодовую страницу.
Примерно так :
Код: plaintext
1.
2.
ADOCommand->ConnectionString = "Provider=VFPOLEDB.1;Data Source=C:\\ADOTest;Mode=ReadWrite;Password="";Collating Sequence=MACHINE";
ADOCommand->CommandText ="EXECSCRIPT([USE Table866.dbf IN 0 ALIAS Table866]+CHR(13)+[SELECT CPCONVERT(866,1251,cField1) as cField1,CPCONVERT(866,1251,cField2) as cField2  FROM Table866 INTO TABLE C:\\DIST\\Table1251.DBF]";
ADOCommand->Execute
Соответсвенно Table866 должно лежать в C:\ADOTest в данном конкретном случае.
...
Рейтинг: 0 / 0
C++ BUILDER, кодировка в DBF
    #34446815
m_vfp1) В заголовке таблицы (29 байт) лежит кодовая страница.
Russian Windows - 0xC9;
Russian MS-DOS - 0x65;

Попробуй поменять 0x65 на 0xC9.

2) Законнектиться к таблице через VFP OLE DB и запросом символьные поля перевести в
другую кодовую страницу.
Примерно так :
Код: plaintext
1.
2.
ADOCommand->ConnectionString = "Provider=VFPOLEDB.1;Data Source=C:\\ADOTest;Mode=ReadWrite;Password="";Collating Sequence=MACHINE";
ADOCommand->CommandText ="EXECSCRIPT([USE Table866.dbf IN 0 ALIAS Table866]+CHR(13)+[SELECT CPCONVERT(866,1251,cField1) as cField1,CPCONVERT(866,1251,cField2) as cField2  FROM Table866 INTO TABLE C:\\DIST\\Table1251.DBF]";
ADOCommand->Execute
Соответсвенно Table866 должно лежать в C:\ADOTest в данном конкретном случае.
Вместо п.2 можно:
1. переписать заголовок таблицы в новый файл (можно изменить 29 байт),
2. данные из "старого" файла конвертнуть через OEMToAnsi() (или OemToChar())
3. записать в новый файл.
4. если не меняли 29 байт, то делаем это здесь...
пп.2 и 3 при необходимости можно заключить в цикл...
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / C++ BUILDER, кодировка в DBF
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]