DBase中的“已删除的行”指示器?

Beh*_*ooz 1 database-design dbase

如您所知,没有用于dBase的x64驱动程序。
http://msdn.microsoft.com/zh-cn/vfoxpro/bb​​190289.aspx
我试图制作一个。
它比ODBC快得多。但是只有一个问题。
我无法确定是否删除了一行。

Ken*_*ite 5

如果删除了记录,则每个记录的第一个字节(不是标题或字段描述,而是实际的记录数据)将包含一个星号(*),否则将包含一个空格(“”)。

这是我在Wotsit.org上找到的,可能会有所帮助:

-------------------------------------------------- --------------------------
Xbase语言中.dbf文件的一般格式96年11月18日
-------------------------------------------------- --------------------------
适用于/受以下机构支持:

   FS =旗舰D3 = dBaseIII +
   Fb = FoxBase D4 = dBaseIV
   Fp = FoxPro D5 = dBaseV
   CL =快船队


1. DBF结构
================

字节说明
------ + --------------------------------------
0..n .dbf标头(有关大小,请参见2,字节8)
n + 1固定长度的第一条记录(请参阅2&3)
       第二条记录(有关大小,请参见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,带有.dbv备忘录var大小FS
           具有.dbv和.dbt备忘录FS的0xB3
           具有.dbt备忘FS,D3,D4,D5,Fb,Fp,CL的0x83
           具有D4格式D4,D5的.dbt备注的0x8B
           带SQL表D4,D5的0x8E
           0xF5,带有.fmp备忘录Fp
01 3 YYMMDD最后更新的数字全部
04 4 ulong全部文件中的记录数
08 2 ushort标头大小(全部字节)
10 2 ushort全部以字节为单位的记录大小
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 Multi ling 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)全部
内存D3中的12 4 n,n,n,n fld地址
           从记录开始Fp的n,n,0,0偏移
           0,0,0,0被忽略FS,D4,D5,Fb,CL
16 1个字节字段长度,bin(请参见2b)全部\ FS,CL:对于C字段类型,
17 1字节十进制计数,bin全部/都用于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字符ASCII(OEM代码页字符)全部
                 休息=空间,而不是\ 0项。
                 n = 1..64kb(使用分位数)FS
                 n = 1..32kb(使用分位数)Fp,CL
                 n = 1..254全部
D 8总共8个数字(0..9)
                 YYYYMMDD格式
F 1..n ASCII数字(-.0123456789)FS,D4,D5,Fp
                 可变位置 float.point
                 n = 1..20
N 1..n个数字的ASCII数字(-.0123456789)
                 修复posit / no float.point
                 n = 1..20 FS,Fp,CL
                 n = 1..18 D3,D4,D5,Fb
L 1逻辑ASCII字符(YyNnTtFf空间)FS,D3,Fb,Fp,CL
                 ASCII字符(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二进制int最大+/- 32767 FS
4 4 long int二进制int最大+/- 2147483647 FS
8 8双二进制带符号双IEEE FS


3.每个Dbf记录(固定长度)
==================

字节大小描述适用于(受支持)
------ + ---- + -------------------------------------- + --------------------------
0 1已删除标志“ *”或未删除“”全部
1..n 1 .. x倍字段内容,固定全部
            长度,未终止。
            对于n,请参见(2)字节10..11