.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 Visual 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 ヘッダーを使用していますか?) 最適なロジックが何であるかはまったく明確ではありません...