关于.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标头?)根本不清楚最好的逻辑是什么......
答案 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)
使用与读取的字节一起使用的格式;即43
,63
,7b
,...,将是dBase 4标头,而30
,31
和32
将是FoxPro标题,等等。
从目前为止你可以从你的桌子上看到,这有点乱。