2010-08-02 4 views
3

En ce qui concerne le premier octet d'un fichier DBF et comment détecter la version de xbase utilisée (par exemple, le format du reste du fichier), la liste la plus complète que je peux compiler est:Quel format d'en-tête peut être supposé en lisant un octet .DBF initial?

 
Byte 0 
----------- 
x xxx x 001 = 0x?1 not used 
0 000 0 010 = 0x02 FoxBASE 
0 000 0 011 = 0x03 FoxBASE+/dBASE III PLUS, no memo 
x xxx x 100 = 0x?4 dBASE 7 
0 000 0 101 = 0x05 dBASE 5, no memo 
0 011 0 000 = 0x30 Visual FoxPro 
0 011 0 001 = 0x31 Visual FoxPro, autoincrement enabled 
0 011 0 010 = 0x32 Visual FoxPro, Varchar, Varbinary, or Blob-enabled 
0 100 0 011 = 0x43 dBASE IV SQL table files, no memo 
0 110 0 011 = 0x63 dBASE IV SQL system files, no memo 
0 111 1 011 = 0x7B dBASE IV, with memo 
1 000 0 011 = 0x83 FoxBASE+/dBASE III PLUS, with memo 
1 000 1 011 = 0x8B dBASE IV, with memo 
1 000 1 110 = 0x8E dBASE IV with SQL table 
1 100 1 011 = 0xCB dBASE IV SQL table files, with memo 
1 110 0 101 = 0xE5 Clipper SIX driver, with SMT memo 
1 111 0 101 = 0xF5 FoxPro 2.x (or earlier) with memo 
1 111 1 011 = 0xFB FoxBASE (with memo?) 
| ||| | ||| 
| ||| | ||| Bit flags (not used in all formats) 
| ||| | ||| ----------------------------------- 
| ||| | +++-- bits 2, 1, 0, version (x03 = level 5, x04 = level 7) 
| ||| +------ bit 3, presence of memo file 
| +++-------- bits 6, 5, 4, presence of dBASE IV SQL table 
+------------ bit 7, presence of .DBT file 

qui format d'en-tête peut être supposé en lisant l'octet initial .DBF? (Par exemple, le fichier fait utiliser un en-tête la version 2, une version 3 à 5 en-tête ou un en-tête la version 7?) Il est pas clair quelle est la meilleure logique serait ...

Répondre

1

DBF tête:http://www.dbf2002.com/dbf-file-format.html

accès Exemple DBF de base, Oui BASIC;)

http://www.angelfire.com/d20/quickbasic/UTIL/IMB9006.ZIP

  • plus ...

Les DBF sont pratiquement statiques dans leur en-tête. Statique jusqu'à la section de départ des champs indiqués dans le même en-tête. La différence faite entre eux par différents dérivés de moteurs de bases de données (xbase) est les types de données, les formats d'optimisation ou de stockage (7,8 bits ASCII ou 128 ou toute autre différence ...). Le format n'a pas de versions (pas un standard) simplement des révisions en tant que développeurs de logiciels qui ont créé des variantes sur leur moteur de base de données (dbase foxpro vs vs clipper etc ...)

Je m'excuse pour la traduction semi-automatique, mais utile .

0

Utilisez le format correspondant à l'octet lu; c'est-à-dire 43, 63, 7b, ..., seraient dBase 4 en-têtes, et 30, 31, et 32 seraient des en-têtes FoxPro, et ainsi de suite. Comme vous pouvez le voir à partir de votre table jusqu'à présent, c'est un peu un gâchis.

Questions connexes