Чтение DBF с кодированными полями #566636


#0 by m_dmitriev
Приветствую, коллеги! Пытаюсь прочитать клипперовский ДБФ. В нем есть двухсимвольное поле, которое обозначает число (с такими работают функции bin2i, i2bin). Задача - получить значение этого числа. При чтении стандартными средствами такая строка далеко не всегда читается как 2 символа, а если и прочлась, то нет уверенности, что КодСимвола возвращает то, что нужно (скорее, он вернет значение через перекодирование Cp866 -> Cp1251) для получения исходного двоичного значения. Итак, объект XBase 1С, как и способ чтения через ADO, не помогли. Куда двигаться дальше? Очень не хочется опускаться до ручного парсинга dbf. Спасибо!
#1 by m_dmitriev
мда, пятница - неудачное время для такого вопроса
#2 by DmitrO
АDO какой тип поля показывает?
#3 by kosts
Если это разово, может попробовать переконвертировать в том же foxpro на тип int
#4 by vde69
во первых установи двухбайтовое выравнивание [HKEY_LOCAL_MACHINESOFTWAREMicrosoftJet4.0EnginesXbase] "BDE"=dword:00000002 если не поможет - используй клиперский драйвер
#5 by m_dmitriev
где посмотреть? отладчиком Fields.DataFormat пустой, Fields.Value имеет тип Строка, но не всегда 2 символа. там порядок байт обратный (сначала младший, потом старший), нужно поменять тип поля + переставить байты уже при чтении выравнивание не помогло, проблема в конвертировании строк при перекидывании кодировки скорее всего, решение в сработает, fox pro нет под рукой. сейчас попробую хексом перекинуть поле
#6 by Torquader
Таки DBF можно и вручную пропарсить, чай не DB2 или что-то экзотическое - пишем конвертер на VbScript и преобразуем в текст или то, что там нужно.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С