|
#1
|
|||
|
|||
Ошибка в Dbf
Народ, помогите плиз. У меня прога производит контроль правильности названий и типов полей в указанной папке во всех DBF-файлах. Фсе эти файлы бес проблем открываюцца в фоксе, а при работе проги вылетает ошибка: Corrupt table/index header. Из за чиво это, подскажите плиз. Заранее спасибо.
ЗЫ. На фсякий случай код: flist:=Table1.FieldDefs; flist_orig:=Table_Original.FieldDefs; fcount:=Table1.FieldCount; fcount_orig:=Table_Original.FieldCount; for i:=0 to (fcount_orig-1) do begin fl:=FALSE; for j:=0 to (fcount-1) do if flist[j].Name=flist_orig[i].Name then begin fl:=TRUE; if flist[j].DataType<>flist_orig[i].DataType then begin WriteToLog('<p>Выявлено несоответствие в типе поля: '+flist[j].Name+'</p>'); end; if flist[j].Size<>flist_orig[i].Size then begin WriteToLog('<p>Выявлено несоответствие в размерности поля '+flist[j].Name+'</p>'); end; end; if not(fl) then begin WriteToLog('<p><font color="#FF0000" face="Arial, Helvetica, sans-serif"><strong>Отсутствует поле </strong></font>'+flist_orig[i].Name+'</p>'); end; end; memo1.Lines.LoadFromFile('LOG.html'); |
#2
|
||||
|
||||
Скорее всего у файлов стоит признак индексации, а индексных файлов, понятных Delphi, нет
ЗЫЖ Если мне не изменяет память это 28 или 29 байт в dbf файле начиная от начала, если его сделать 00, то все будет Ок Последний раз редактировалось Aristarh Dark, 03.07.2006 в 09:45. |
#3
|
|||
|
|||
и 28 и 29 байты одинаковые в файла, по которым вылезает ошибка, и по нормальным. А чо за признак индексации и где ево смотреть?
|
#4
|
|||
|
|||
Цитата:
А теперь попорядку. Вопервых ошибка что утебя вылезает говорит о том что у твоеё базы есть привязанный индексный файл (как правило с темже именем, но по идеи можно любой тип индекса с любым именеи пристегнуть к любой базе - я имею ввиду xBase, dBase, Clipper, FoxPro). как это лечится? да просто, ты говориш в FoxPro открывается без проблем, так просто тамже и удаль индекс той базы и сделай Pac - и делов то. Сейчас подрукой нет Фокса да и работал в последни раз с ним я уже дано, попунктам как делаетсе напамьть нескажу - надо смотреть. Ну а если хочеш с Фоксовыми базами и его индексами в Делфи работать, то используй Halcyon 6хх . Ну а поповоду заголовка DBF- что где и как смотри тут http://delphi.olympus.ru/dk/helloword/dbheader.htm |