Structura dbf-fișiere pentru non-avansate


Structura fișierelor DBF pentru non-avansate

Structura fișierelor DBF pentru non-avansate

intrare

Totul ar fi bine daca nu ar fi pentru BDE.
Nu, BDE este foarte bun, este rău că, odată ce ai folosit TTable în program, trebuie să te gândești cum să "legi" BorlandDatabaseEngine de mașina utilizatorului cu pierderi minime. Acesta este primul lucru care te face să stai să studiezi anteturile fișierelor DBF. Și al doilea. Aceste fișiere DBF foarte au o caracteristică precum distrugerea antetelor. Și al treilea, al patrulea și al cincilea.







Nu este dificil să scrieți o componentă care funcționează cu tabelele DBF. În acest caz, opriți nemijlocit citirea articolului!
Și vom vedea care sunt anteturile fișierelor DBF și cum vă puteți folosi cunoștințele despre ele în aplicații practice.

Fișierul DBF este alcătuit din două părți:
  • antet
  • înregistrare reală
Schematic, toate acestea pot fi reprezentate după cum urmează:

Tabelul 1. Structura fișierului DBF

Simbolul de terminare este 0x1A (26)

RecordSize (dimensiunea înregistrării în octeți) și RecordsCount (numărul de înregistrări), ale căror valori sunt luate din antetul fișierului DBF, vor fi luate în considerare mai jos.
Acum, că știm părțile din fișierul DBF și dimensiunea acestora, să trecem la o privire mai detaliată asupra structurii lor.

Descrierea antetului fișierului DBF

După cum puteți vedea din tabelul anterior, titlul este compus din trei părți:
  • titlul propriu-zis
  • descrierea terenului
  • antetul final este caracterul 0x0D (13)






Dimensiunea "antetului adecvat" este de 32 de octeți, fiecare având o valoare strict definită.

Tabelul 2. Structura antetului DBF

Titlul personajului se termină cu caracterul 0x0D (13)

Acum poți face niște calcule. De exemplu, determinați numărul de câmpuri dintr-un fișier DBF.
Dimensiunea antetului fișierului DBF în octeți este:
32 + 32xN + 1 octet, unde N este numărul de câmpuri.
Aceeași mărime poate fi extrasă de la 8,9 octeți de antet - HeaderSize
Prin urmare, numărul de câmpuri este:
N: = (HeaderSize-33) / 32 octeți.
Trecând la octetul HeaderSize de la începutul fișierului, mergem direct la fișierele în sine, a căror dimensiune este indicată în 10.11 octeți din antet - RecordSize. și numărul lor în 04..07 bytes este RecordsCount.
Structura înregistrării în fișierul DBF este mai simplă.

Structura unei înregistrări într-un fișier DBF

Fiecare intrare are următoarea structură.

Tabelul 5. Structura înregistrării în fișierul DBF

Ștergeți stegulețul "*", altfel - spațiu

Diferite tipuri de câmpuri cu lungime fixă
fără caractere înclinate
lungimea câmpului n este determinată în 16 octeți ai structurii de descriere a câmpului.

Fișierul DBF se termină cu caracterul 0x1A (26)

Astfel, în general, o înregistrare este un șir de caractere (altele decât FS), constând din părți (câmpuri) de o dimensiune strict definită. Aceste dimensiuni sunt indicate în structura descrierii câmpului din 16 octeți.

Acum, după ce am studiat structura structurii fișierului DBF, putem:
  1. Obțineți informații importante despre fișierul DBF din primele 32 de octeți
  2. Modificați câteva valori importante ale DBF:
    • schimbați driverul de tabelă de limbă
    • un un tabel dintr-un fișier index
    • la voință - încă ceva
  3. Determinați numărul și tipul de câmpuri dintr-un fișier DBF
  4. Urmăriți distrugerea antetului fișierului DBF, prin calcularea locației antetului caracterului final și compararea lui cu 0x0D (13)
  5. Încercați să restaurați titlul
  6. Creați un driver primitiv pentru a lucra cu un fișier DBF fără BDE
  7. Și mult, mult mai mult.

Un exemplu mic

În plus față de material: DBFCodePage.zip (1.7K) un mic re-encoder (driverul de limbă) ascii ANSI Win 1251 în dBase RUS cp866 și înapoi.







Trimiteți-le prietenilor: