Дали на работе задачу: Нужно взять повреждённую базу 1С, определить, является ли файл файлом базы данных, выдернуть из неё все поля, идентификаторы... и создать такую же базу, только без глюков. ВОПРОС: Правильно ли я поступаю, если определяю принадлежность файла к формату DBF по сумме первых 7 байт. Если она равна 7D (или 125), то это база DBF... Может быть есть и другие критерии?
нифига се чё за способ за такой? 1-й байт тип таблицы может быть от 03 до F5 дальше три байта год месяц день это 4 дальше идёт dword с количеством записей в таблице т.е. ты берёшь всю ту лабуду и кусок этого dworda складываешь и получаешь всегда 7d? определить можно разве что по структуре как иделают все проги. Поясни вообще как они испорчены эти файлы-то? Если из них можно данные дёрнуть то не проще ли поправить заголовок? Напиши подробнее я копал DBF по работе ... надо было расшифровать....
Абсолютно неправильно Информации по формату DBF (xBase) - как грязи (включая M$DN), утилит и библиотек тоже полно (для большинства целей хватает клипперовской DBU). Кроме самих DBF файлов могут потребоваться еще и мемо-файлы (расширение зависит от версии), а повреждены могут быть и только индексы - тогда реиндексация может стать решением. На всякий случай - вьювер под винду: http://www.legendsoft.com/, куча других программ идет в исходниках (ALXSoft etc.)
наверно я украл... а вообще прально газлан сказал почитай о формате чтобы не пороть чепуху ... я не понял к чему было твоё ведь я тебе расписал значение складываемых тобой байтов короче ознакомься
Щас собираю код для вывода всех записей..... Странная вещь.... при PUSH очередных 32 байт программа тормозит на 2 сек... может это потому, что слишком большой объём данных отпраляется в память (файл размером 27 MB)
Прочитай в книге Гусев АА ПРОГРАММИРОВАНИЕ 1С на странице 242 строку третью символ восьмой и все последующие символы, пока не встретишь EOL. У тебя получится: Глава 1.3.1 Структура формата DBF