2

ご存じのとおり、dBase 用の x64 ドライバーはありません。Visual FoxPro FAQから :

Q: Visual FoxPro が Windows オペレーティング システムの 64 ビット バージョンをサポートする予定はありますか?

いいえ。Visual FoxPro は 32 ビットのままであり、ネイティブに 64 ビット アドレス指定を使用しません。32 ビット互換モードで実行されます。

作ってみました。

ODBC よりもはるかに高速ですが、1 つだけ問題があります。行が削除されているかどうかを判断できません。

dBase では、行を削除しても実際には削除されず、削除済みとしてマークされるだけです。行が削除されたかどうかはどうすればわかりますか?

4

1 に答える 1

7

各レコードの最初のバイト (ヘッダーやフィールドの説明ではなく、実際のレコード データ) には、レコードが削除されている場合はアスタリスク ("*") が含まれ、削除されていない場合は空白スペース (" ") が含まれます。

しばらく前に Wotsit.org で見つけた役立つ情報を次に示します。

-------------------------------------------------- --------------------------
Xbase 言語での .dbf ファイルの一般的な形式 18-Nov-96
-------------------------------------------------- --------------------------
適用/サポート:

   FS = フラッグシップ D3 = dBaseIII+
   Fb = FoxBase D4 = dBaseIV
   Fp = FoxPro D5 = dBaseV
   CL = クリッパー


1. DBF の構造
================

バイトの説明
------+-----------------------------------------------------
0..n .dbf ヘッダー (サイズについては 2、バイト 8 を参照)
n+1 固定長の最初のレコード (2&3 を参照) \
       2 番目のレコード (サイズについては 2、バイト 10 を参照) \ dbf が
       ... / 空ではない
       最後のレコード /
最後のオプション: 0x1a (eof バイト)


2. DBF ヘッダー (フィールド数に応じて可変サイズ)
================================================== =====

バイト サイズ 内容 説明 適用対象 (サポート対象)
--+----+--------+----------------------------+-- ---------------------------
00 1 0x03 プレーン .dbf FS、D3、D4、D5、Fb、Fp、CL
           0x04 プレーン .dbf D4、D5 (FS)
           0x05 プレーン .dbf D5、Fp (FS)
           0x43 with .dbv memo var size FS
           .dbv および .dbt メモ FS を使用する 0xB3
           0x83 .dbt メモ付き FS、D3、D4、D5、Fb、Fp、CL
           D4 形式の .dbt メモ付きの 0x8B D4、D5
           SQL テーブル D4、D5 では 0x8E
           .fmp メモ付き 0xF5 Fp
01 3 YYMMDD 最終更新桁 全て
04 4 ulong ファイル内のレコード数 all
08 2 ushort ヘッダー サイズ (バイト単位) すべて
10 2 ushort バイト単位のレコード サイズ all
12 2 0,0 すべて予約済み
14 1 0x01 トランザクション開始 D4、D5
           0x00 トランザクション終了 D4、D5
           0x00 無視 FS、D3、Fb、Fp、CL
15 1 0x01 暗号化された D4、D5
           0x00 通常 可視 すべて
16 12 0 (1) マルチユーザー環境での使用 D4、D5
28 1 0x01 生産インデックスが存在します Fp、D4、D5
           オンデマンドの 0x00 インデックス すべて
29 1 n 言語ドライバー ID D4、D5
           0x01 コードページ 437 DOS USA Fp
           0x02 コードページ 850 DOS マルチリング Fp
           0x03 コードページ 1251 Windows ANSI Fp
           0xC8 コードページ 1250 Windows EE Fp
           0x00 無視 FS、D3、Fb、Fp、CL
30 2 0,0 すべて予約済み
32 n*32 フィールド記述子、(2a) すべてを参照
+1 1 0x0D ヘッダ レコード ターミネータ すべて


2a. dbf ヘッダーのフィールド記述子配列 (フィールドごとに 32 バイトを固定)
========================================

バイト サイズ 内容 説明 適用対象 (サポート対象)
--+----+--------+----------------------------+-- ---------------------------
0 11 ASCI フィールド名、0x00 終端。全て
11 1 ASCI フィールド タイプ (2b を参照) すべて
12 4 n,n,n,n メモリ D3 の fld アドレス
           レコード開始 Fp からの n,n,0,0 オフセット
           0,0,0,0 無視 FS、D4、D5、Fb、CL
16 1 バイト フィールド長、ビン (2b を参照) すべて \ FS、CL: C フィールド タイプの場合、
17 1 バイトの 10 進数のカウント、ビンのすべて/両方を fld lng に使用
18 2 0,0 すべて予約済み
20 1 バイト ワークエリア ID D4、D5
           0x00 未使用 FS、D3、Fb、Fp、CL
21 2 n,n マルチユーザー dBase D3、D4、D5
           0,0 無視 FS、Fb、Fp、CL
23 1 0x01 セット フィールド D3、D4、D5
           0x00 無視 FS、Fb、Fp、CL
24 7 0..0 すべて予約済み
31 1 0x01 フィールドは .mdx インデックス D4、D5 にあります
           0x00 無視 FS、D3、Fb、Fp、CL


2b. dbf ヘッダーのフィールド タイプとサイズ、フィールド記述子 (1 バイト)
================================================== =====

  サイズ タイプ 説明/ストレージ 適用対象 (サポート対象)
------+---------------------+------------------------------+-- ---------------------------
C 1..n Char ASCII (OEM コード ページ文字) すべて
                 \0 用語ではなく、rest= スペース。
                 n = 1..64kb (デシカウントを使用) FS
                 n = 1..32kb (デシ カウントを使用) Fp、CL
                 n = 1..254 すべて
D 8 Date 全部で 8 つの ASCII 数字 (0..9)
                 YYYYMMDD形式
F 1..n アスキー数値 (-.0123456789) FS、D4、D5、Fp
                 可変位置 float.point の
                 n = 1..20
N 1..n 数字の ASCII 数字 (-.0123456789) すべて
                 float.point の位置を修正する/しない
                 n = 1..20 FS、Fp、CL
                 n = 1..18 D3、D4、D5、Fb
L 1 論理アスキー文字 (YyNnTtFf スペース) FS、D3、Fb、Fp、CL
                 アスキー文字 (YyNnTtFf ?) D4、D5 (FS)
M 10 メモ 10 桁で表します。すべての始まり
                 ブロックポジション。.dbt ファイル内、または
                 メモに記載がない場合は10スペース
V 10 変数 変数、.dbv FS の bin/asc データ
                 4bytes bin=メモ中の開始位置
                 4bytes bin= ブロックサイズ
                 1byte = サブタイプ
                 1 バイト = 予約 (0x1a)
                 .dbv にエントリがない場合は 10 個のスペース
P 10 .ftp Fp の画像バイナリ データ
                 Mのような構造
B 10 .dbt D5 のバイナリ バイナリ データ
                 Mのような構造
G 10 一般 OLE オブジェクト D5、Fp
                 Mのような構造
2 2 short int binary int max +/- 32767 FS
4 4 long int binary int max +/- 2147483647 FS
8 8 double バイナリ符号付き double IEEE FS


3. 各 Dbf レコード (固定長)
==================

バイトサイズ 説明 適用対象 (サポート対象)
------+----+-------------------------------------- + --------------------------
0 1 削除済みフラグ "*" または未削除 " " すべて
1..n 1.. x-times フィールドのコンテンツ、すべて固定
            長さ、未終了。
            n については、(2) バイト 10..11 を参照してください。
于 2009-12-14T19:32:51.240 に答える