通过读取初始.DBF字节可以假设哪种头格式?

时间:2010-08-02 20:34:58

标签: dbf dbase xbase

关于.DBF文件的第一个字节以及如何检测所使用的xbase版本(即文件其余部分的格式),我可以编译的最全面的列表是:

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

通过读取初始.DBF字节可以假设哪种头格式? (即,该文件是使用版本2标头,版本3到5标头,还是版本7标头?)根本不清楚最好的逻辑是什么......

2 个答案:

答案 0 :(得分:1)

DBF标题: http://www.dbf2002.com/dbf-file-format.html

来自basic的示例dbf访问,是BASIC;)

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

  • 更多...

DBF在标题中几乎是静态的。 静态,直到同一标题中指示的字段的开始部分。 由不同的数据库引擎衍生物(xbase)给出的它们之间的差异是数据类型,优化或存储格式(7.8位ASCII或128或任何其他差异......)。 该格式没有版本(不是标准)只是作为在其引擎数据库上创建变体的软件开发人员(dbase foxpro vs vs clipper等...)

我为半自动翻译道歉,但很有用。

答案 1 :(得分:0)

使用与读取的字节一起使用的格式;即43637b,...,将是dBase 4标头,而303132将是FoxPro标题,等等。

从目前为止你可以从你的桌子上看到,这有点乱。