3

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

字节 0
------------
x xxx x 001 = 0x?1 未使用
0 000 0 010 = 0x02 福克斯基地
0 000 0 011 = 0x03 FoxBASE+/dBASE III PLUS,无备注
x xxx x 100 = 0x?4 dBASE 7
0 000 0 101 = 0x05 dBASE 5,无备忘录
0 011 0 000 = 0x30 视觉 FoxPro
0 011 0 001 = 0x31 Visual FoxPro,启用自动增量
0 011 0 010 = 0x32 Visual FoxPro、Varchar、Varbinary 或启用 Blob
0 100 0 011 = 0x43 dBASE IV SQL 表文件,无备注
0 110 0 011 = 0x63 dBASE IV SQL 系统文件,无备忘录
0 111 1 011 = 0x7B dBASE IV,带备忘录
1 000 0 011 = 0x83 FoxBASE+/dBASE III PLUS,带备忘录
1 000 1 011 = 0x8B dBASE IV,带备忘录
1 000 1 110 = 0x8E dBASE IV 与 SQL 表
1 100 1 011 = 0xCB dBASE IV SQL 表文件,带备忘录
1 110 0 101 = 0xE5 Clipper SIX 驱动程序,带 SMT 备忘录
1 111 0 101 = 0xF5 FoxPro 2.x(或更早版本)带备忘录
1 111 1 011 = 0xFB FoxBASE(带备忘录?)
| ||| | |||
| ||| | ||| 位标志(并非用于所有格式)
| ||| | ||| ----------------------------------
| ||| | +++-- 位 2、1、0,版本(x03 = 5 级,x04 = 7 级)
| ||| +------ 位 3,备忘录文件的存在
| +++-------- 位 6、5、4,存在 dBASE IV SQL 表
+------------ 位 7,.DBT 文件的存在

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

4

2 回答 2

1

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

从基本的 dbf 访问示例,是 BASIC ;)

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

  • 更多的...

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

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

于 2011-06-17T20:50:38.693 回答
0

使用读取字节的格式;即43, 63, 7b, ... 将是 dBase 4 标头,并且30, 31,32将是 FoxPro 标头,等等。

到目前为止,从您的表格中可以看出,这有点乱。

于 2015-12-07T17:29:56.530 回答