Существует некая ужасная недоделаная фокспрошная прога типа для автоматизации деятельноти библиотек. Один казахский универ имел несчастье пользоваться ей какое-то не малое количество времени и набил в базу приличное количество записей. Сама база состоит из dbf, cdx и idx файлов, но не открывается ни одним odbc-драйвером — VB падает с критическими ошибками. Программа типа умеет делать экспорт в txt, но в какой-то высосанный из пальца формат, причем корректно это делает только под XP SP2. Исходников и разработчиков этого бреда уже не найти, но они сподобились оставить описание формата:
ПРИЛОЖЕНИЕ. ОПИСАНИЕ ФОРМАТА АБИС.
ФАЙЛ ПРЕДСТАВЛЯЕТ СОБОЙ ПОСЛЕДОВАТЕЛЬНОСТЬ БАЙТ. СИМВОЛЫ С ВНУТРЕННИМ КОДОМ 13 МОГУТ ВСТРЕЧАТЬСЯ В ФАЙЛЕ, НО ОНИ НЕ ТРАКТУЮТСЯ КАК КОНЕЦ СТРОКИ, А ЯВЛЯЮТСЯ ЧАСТЬЮ ИНФОРМАЦИИ.
ФОРМАТ ФАЙЛА:
< ФАЙЛ В ФОРМАТЕ АБИС > = <ЗАПИСЬ> [ <ЗАПИСЬ> ... <ЗАПИСЬ> ]
<ЗАПИСЬ> = <ДЛИНА ЗАПИСИ> <СЛУЖЕБНАЯ ИНФОРМАЦИЯ> <ПОДПОЛЕ> [ <ПОДПОЛЕ>... <ПОДПОЛЕ> ]
<ДЛИНА ЗАПИСИ> - CHR(A),CHR(B), ГДE А*256+В - ДЛИНА ВСЕЙ ЗАПИСИ.
<СЛУЖЕБНАЯ ИНФОРМАЦИЯ> - СТРОКА ДЛИНОЙ 45 БАЙТ.
1 БАЙТ -БИБЛИОГРАФИЧЕСКИЙ УРОВЕНЬ(1-6)
2-9 БАЙТЫ - ДАТА ЗАПИСИ (ЧЧММГГГГ ) 10-17 БАЙТЫ - ДАТА ПОСЛЕДНЕЙ КОРРЕКТИРОВКИ
18-37 БАЙТЫ - ФАМИЛИЯ СОТРУДНИКА, ЗАПОЛНИВШЕГО ОПИСАНИЕ
38 БАЙТ - ПРИЗНАК КРАЕВЕДЕНИЯ (ПР0БЕЛ, 1)
39 БАЙТ - ТИП ОПИСАНИЯ (CHR(1)-CHR(12))
40,41 БАЙТЫ-ПОР. НОМЕР
42-45 БАЙТЫ - РЕЗЕРВ
<ПОДПОЛЕ> = <ОПИСАТЕЛЬ ПОДПОЛЯ> <ЗНАЧЕНИЕ>
<ОПИСАТЕЛЬ ПОДПОЛЯ> - СТРОКА ДЛИНОЙ 5 БАЙТ
1 БАЙТ - СHR(N), ГДЕ N - НОМЕР ПОЛЯ
2 БАЙТ - CHR(M), ГДЕ М - НОМЕР ЭКЗЕМПЛЯРА
3 БАЙТ - CHR(L), ГДЕ L - НОМЕР ПОДПОЛЯ
4,5 БАЙТЫ - CHR(X1),CHR(X2), ГДЕ X1*256+X2 - ДЛИНА ПОДПОЛЯ
<ЗНАЧЕНИЕ> - СТРОКА УКАЗАННОЙ 8 ОПИСАТЕЛЕ ДЛИНЫ, СОДЕРЖАЩАЯ ЗНАЧЕНИЕ ПОДПОЛЯ.
Непонятки начались сразу, там, где выделено жирным. Если посчитать по этой формуле первые два байта из экспортного файла, то получается, что длина первой записи равна 25кб, чего быть не может. Это размер целой небольшой повести. В общем, я не знаю, как к нему подступиться. Надеюсь, всемогущему all будет не лень кинуть взгляд на прилагаемый файл, и подтолкнуть меня в нужном направлении.