(转)VFP文件结构-微软MSDN

备注文件的结构(.FPT

请参阅

备注文件包含一个头记录以及任意数目的块结构。头记录中包含指向下一个自由块的指针以及以字节为单位表示的块大小。块的大小是在创建文件时由 SET BLOCKSIZE 命令确定的。头记录从文件位置 0 开始并占用 512 个字节。命令 SET BLOCKSJZE TO 0 设置块大小为 1

头记录之后是包含块标头与备注文本的各个块。表文件包含有用于引用备注块的块编号。备注文件中某个块的位置可由该块的编号与块大小(在备注文件的头记录中建立)相乘得到。所有的备注块均由偶数的块边界地址开始。每一备注块可以占用一个以上的连续块。

备注头记录

字节偏移

说明

00 - 03

下一个自由块的位置1

04 – 05

未使用

06 – 07

块大小(每个块的字节数)1

08 – 511

未使用

1 存储整数时,高位字节在前。




备注块标头与备注文本

字节偏移

说明

00 – 03

块签名 1 (指示块中数据的类型)
0 –
图片(图片字段类型)
1 –
文本(备注字段类型)

04 – 07

备注长度 1 (以字节为单位)

08 – n

备注文本(n = 长度)

1 存储整数时,高位字节在前。



表文件(.dbc.frx.lbx.mnx.pjx.scx.vcx)的表结构

请参阅

关于表结构的说明存储在 FILESPEC 目录下的文件中。FILESPEC 目录包含两个项目:50SPEC.pjx 26SPEC.pjx50SPEC.pjx 包含说明 Visual FoxPro 6.0 5.0 版表文件的表和报表。而 26SPEC.pjx 包含说明 FoxPro 2.6 版表文件的表和报表。

要查看关于某种表结构的说明,请打印相应的报表。下表列出了文件类型及其相关报表。有的文件类型由于列太多而无法放在同一页上,因而需要多个报表。

注释 所有报表均设置为横向打印格式。

Visual FoxPro 6.0 5.0

要查看下列表结构…

打印此报表

使用

数据库1

60DBC.frx

60DBC.dbf

表单和
可视类库

60SCX1.frx
60SCX2.frx

60SCX.dbf

菜单2

60MNX.frx

60MNX.dbf

项目

60PJX1.frx
60PJX2.frx

60PJX.dbf

报表和
标签

60FRX1.frx
60FRX2.frx

60FRX.dbf

1 可以在 60DBCPRO.frx 中打印数据库的属性。


2 6.0
结构中的位置字段与 5.0 结构不同。




FoxPro 2.6

要查看下列表结构…

打印此报表

使用

屏幕

26SCX1.frx
26SCX2.frx

26SCX.dbf

菜单

26MNX.frx

26MNX.dbf

项目

26PJX1.frx
26PJX2.frx

26PJX.dbf

报表和
标签

26FRX1.frx
26FRX2.frx

26FRX.dbf


表文件的结构(.dbc.dbf.frx.lbx.mnx.pjx.scx.vcx

请参阅

Visual FoxPro 使用表存储数据,并根据存储数据的不同定义了不同的文件类型,作为表文件保存的文件类型有:

  • 表(.dbf

  • 数据库(.dbc

  • 表单(.scx

  • 标签(.lbx

  • 菜单(.mnx

  • 项目(.pjx

  • 报表(.frx

  • 可视类库(.vcx

由于上述文件实际上就是表,因此能够以浏览 .dbf 文件的方式使用和浏览这些文件。

表文件由头记录及数据记录组成。头记录定义该表的结构并包含与表相关的其他信息。头记录由文件位置 0 开始。数据记录1紧接在头记录之后(连续的字节),包含字段中实际的文本。

有关各种文件类型的表结构的详细内容,请参阅“表文件的表结构”。

记录的长度(以字节为单位)等于所有字段定义的长度之和。表文件中存储整数时低位字节在前。

表头记录的结构

字节偏移

说明

0

文件类型
0x02FoxBASE
0x03FoxBASE+/dBASE III PLUS
,无备注
0x30Visual FoxPro
0x43dBASE IV SQL
表文件,无备注
0x63dBASE IV SQL
系统文件,无备注
0x83FoxBASE+/dBASE III PLUS
,有备注
0x8BdBASE IV
有备注
0xCBdBASE IV SQL
表文件,有备注
0xF5FoxPro 2.x
(或更早版本)有备注
0xFBFoxBASE

1 – 3

最近一次更新的时间(YYMMDD

4 – 7

文件中的记录数目

8 – 9

第一个数据记录的位置

10 – 11

每个数据记录的长度(包括删除标记)

12 – 27

保留

28

表的标记
0x01
具有 .cdx 结构的文件
0x02
文件包含备注。
0x04
文件是数据库(.dbc
请注意,这个字节可以包含任何上面值的和。例如,0x03 表明表具有结构化 .cdx 和一个备注字段。

29

代码页标记

30 – 31

保留,包含 0x00

32 – n

字段子记录
字段的数目决定了字段子记录的数目。表中每个字段都对应一个字段子记录。

n+1

头记录终止符(0x0D

n+2 n+264

此范围内的 263 个字节包含后链信息(相关数据库 (.dbc) 的相对路径)。如果第一个字节为 0x00,则该文件不与数据库关联。因此数据库文件本身总是包含 0x00



1 头记录中的第 8 到第 9 个字节指示数据文件中数据的起始位置。数据记录从删除标记字节开始。如果此字节为 ASCII 空格 (0x20),该记录没有删除标记,如果第一字节为星号 (0x2A),该记录有删除标记。在标记之后是字段记录中所命名各字段中的数据。

字段子记录结构

字节偏移

说明

0 - 10

字段名(最多 10 个字符 —若少于 10 则用空字符 (0x00) 填充)

11

字段类型
C–
字符型
Y–
货币型
N–
数值型
F–
浮点型
D–
日期型
T–
日期时间型
B–
双精度型
I–
整型
L–
逻辑型
M–
备注型
G–
通用型
C–
字符型(二进制)
M–
备注型(二进制)
P–
图片型

12 - 15

记录中该字段的偏移量

16

字段长度(以字节为单位)

17

小数位数

18

字段标记
0x01
系统列(用户不可见)
0x02
可存储 null 值的列
0x04
二进制列(只适于字符型和备注型)

19 – 32

保留



有关对每个记录中字符的限制以及字段数目的最大值等详细内容,请参阅“Visual FoxPro 系统容量”。

说明

除非在文件中添加下列功能,否则 Visual FoxPro 将不修改按 FoxPro 2.x 文件格式保存的文件标头:

  • 支持 null

  • 日期时间型、货币型及双精度型数据

  • 字符字段和备注字段标记为二进制

  • 在数据库 (.dbc) 文件中添加表

提示 可以使用下面的公式求出表文件中字段的数目:(x – 296/32) 公式中,x 表示第一个记录的位置(表头记录的第 8 到第 9 个字节),296 表示 263(后链信息)+ 1(头记录终止符)+ 32(第一个字段子记录),32 是字段子记录的长度。

复合索引文件的结构(.cdx

请参阅

所有复合索引均为压缩索引。

存在一种追踪 .cdx 文件中所有标识的文件结构。该结构与压缩索引文件的结构只有一点不同:该结构中最低层的叶结点指向复合索引中的标识。

索引中所有标识均有各自的完整结构,并与 .idx 文件的压缩索引结构等价。

压缩索引文件的结构(.idx

请参阅

压缩索引头记录

字节偏移

说明

00 - 03

指向根结点的指针

04 - 07

指向自由结点列表的指针(如果不存在,则为 – 1

08 - 11

保留供内部使用

12 - 13

关键字长度

14

索引选项(下列某一数值或它们的和)
1–
唯一索引
8–
索引包含 FOR 子句
32 –
压缩索引格式
64 –
复合索引标头

15

索引签名

16 - 19

保留供内部使用

20 - 23

保留供内部使用

24 - 27

保留供内部使用

28 - 31

保留供内部使用

32 - 35

保留供内部使用

36 - 501

保留供内部使用

502 - 503

升序或降序
0 =
升序
1 =
降序

504 - 505

保留供内部使用

506 - 507

FOR 表达式池长度1

508 - 509

保留供内部使用

510 - 511

关键字表达式池长度1

512 - 1023

关键字表达式池(未编译)

1 该信息追踪关键字表达式池中使用的空间。



压缩索引内部结点记录

字节偏移

说明

00 - 01

结点属性(下列某一数值或它们的和):
a.0 –
索引结点
b.1 –
根结点
c.2 –
叶结点

02 - 03

现有关键字的数目(01 或更多)

04 - 07

当前结点的左结点指针(在同一层次上;如果不存在,则为 - 1

08 - 11

当前结点的右结点指针(在同一层次上;如果不存在,则为 - 1

12 - 511

最多有 500 个字符,其中包括关键字长度的值,用四字节的十六进制数表示(按照一般的自左而右的格式存储):
此结点总是包含索引关键字、记录编号及内联索引指针2
字节 02 - 03 指定的数决定键值/四字节十六进制数组合出现的次数。



压缩索引外部结点记录

00 - 01

结点属性(下列某一数值或它们的和):
0 –
索引结点
1 –
根结点
2 –
叶结点

02 - 03

现有关键字的数目(01 或更多)

04 - 07

当前结点的左结点指针(在同一层次上;如果不存在,则为 - 1

08 - 11

当前结点的右结点指针(在同一层次上;如果不存在,则为 - 1

12 - 13

结点上可用的自由空间

14 - 17

记录号掩码

18

重复字节计数掩码

19

后缀字节计数掩码

20

用作记录号的比特位数

21

用作重复计数的比特位数

22

用作后缀计数的比特位数

23

包含记录号、重复计数及后缀计数的字节数

24 - 511

索引关键字的信息2

2 每项均由记录号、重复字节计数及后缀字节计数组成,并且都为压缩形式。关键字文本放置在结点的逻辑末尾,向后起作用,适用于当前的各个关键字项。


索引文件的结构(.idx

请参阅

索引文件包含一个头记录以及一个或多个结点记录。头记录包含根结点、当前的文件大小、关键字长度、索引选项与签名以及用可打印的 ASCII 表示的关键字值和 FOR 表达式。头记录从文件位置 0 开始。

其余的结点记录包含属性值,现有的关键字数目以及指向当前结点的左结点和右结点(在同一层次上)的指针。另外还包含有一组字符,其中包括关键字值和指向某个低级结点或实际的表记录编号的指针。输出到文件中的每个记录的大小为 512 字节。

索引头记录

字节偏移

说明

00 – 03

指向根结点的指针

04 - 07

指向自由结点列表的指针(如果不存在则为 - 1

08 - 11

指向文件尾的指针(文件大小)

12 - 13

关键字长度

14

索引选项(下列某一数值或它们的和):
1 –
唯一索引
8 –
索引包含 FOR 子句

15

索引签名(供将来使用)

16 - 235

关键字表达式(未编译;最多 220 个字符)1,3

236 - 455

FOR 表达式(未编译;以 null 值字节结束,最多220 个字符)

456 - 511

未使用



索引结点记录

字节偏移

说明

00 - 01

结点属性(下列某一数值或它们的和):
0 –
索引结点
1 –
根结点
2 –
叶结点

02 - 03

现有关键字的数目(01 或更多)

04 - 07

指向当前结点左结点的指针(在同一层次上;如果不存在,则为 - 1

08 - 11

指向当前结点右结点的指针(在同一层次上;如果不存在,则为 - 1

12 - 511

最多有 500 个字符,其中包括关键字长度的值,以及一个四字节的十六进制数表示(按照一般的自左而右的格式存储):
如果结点为叶结点(属性 = 02 03),这四个字节包含以十六进制格式表示的实际表记录编号;否则,这四个字节包含内联索引指针2

字节 02 - 03,指定在这组字符中关键字/四字节十六进制数组合出现的次数。



1 关键字类型并不存储在索引中。必须由关键字表达式确定。
2
除了字符串、关键字值和叶结点中四字节数以外的所有数值均以保留码 (Intel 8086 格式) 表示。
3
使用数字作为关键字时要经过特殊处理。将使用下列算法转换数字,使得它们可以按照与字符相同的 ASCII 的排序序列进行排序。

  • 将数转换为 IEEE 浮点数格式。

  • 交换字节的顺序,从 Intel 8086 顺序转换为自左而右的顺序。

  • 如果是负数,则对该数逻辑求反(交换全部的 64 位,1 变成 00 变成 1);否则,只对最左边的位求反。

排序树结构示例

在下面结构中查找关键字时,需要在根结点和叶结点之间的某个路径上搜索。在最低层上的结点是叶结点。因为关键字已进行了排序,因而子树中的所有关键字均小于或等于父结点的关键字。





上图中,使用字母作为关键字值。另外,每个关键字之后还有一个四字节的十六进制数。与叶结点中关键字相关联的数是实际的表编号—其他结点中的关键字都有与之关联的内联索引指针。

索引结点记录的 12—511 字节可分解如下:



12—511 字节中,关键字值/十六进制数组合共出现 n 次, n 为现有关键字的数目。

宏文件的格式(.fky

请参阅

文件头

字节偏移

说明

01 - 03

签名,十六进制 79FF

04 - 15

忽略

16 - 17

宏的数目(二进制)

18 - end



单独宏

字节偏移

说明

00 - 19

宏名

20 - 21

宏长度(以键击数表示,二进制)

22 - 23

键击(两字节,二进制)

24 - end

宏键击


文件扩展名与文件类型

请参阅

本表列出了 Visual FoxPro 使用的文件扩展名及其关联的文件类型。

扩展名

文件类型

.act

向导操作图的文档

.app

生成的应用程序或 Active Document

.cdx

复合索引

.chm

编译的 HTML Help

.dbc

数据库

.dbf

.dbg

调试器配置

.dct

数据库备注

.dcx

数据库索引

.dep

相关文件(由“安装向导”创建)

.dll

Windows 动态链接库

.err

编译错误

.esl

Visual FoxPro 支持的库

.exe

可执行程序

.fky

.fll

FoxPro 动态链接库

.FMT

格式文件

.FPT

表备注

.FRT

报表备注

.frx

报表

.fxp

编译后的程序

.h

头文件( Visual FoxPro C/C++ 程序需要包含的)

.hlp

WinHelp

.htm

HTML

.idx

索引,压缩索引

.lbt

标签备注

.lbx

标签

.log

代码范围日志

.lst

向导列表的文档

.mem

内存变量保存

.mnt

菜单备注

.mnx

菜单

.mpr

生成的菜单程序

.mpx

编译后的菜单程序

.ocx

ActiveX 控件

.pjt

项目备注

.pjx

项目

.prg

程序

.qpr

生成的查询程序

.qpx

编译后的查询程序

.sct

表单备注

.scx

表单

.spr

生成的屏幕程序(只适用于 FoxPro 以前的版本)

.spx

编译后的屏幕程序(只适用于 FoxPro 以前的版本)

.tbk

备注备份

.txt

文本

.vct

可视类库备注

.vcx

可视类库

.vue

FoxPro 2.x 视图

.win

窗口文件




目 录 第一部分:组织信息 1 第一章:入门指南 2 启动 Visual FoxPro 2 介绍“项目管理器” 3 介绍 Visual FoxPro 设计器 11 使用工具栏 12 使用向导 12 使用生成器 14 第二章:创建表和索引 15 创建新表 15 存储和查看表中的信息 18 修改表 26 定制表 27 用索引对数据排序 30 建立索引 31 使用索引 34 第三章:将表加入数据库 36 使用数据库 36 创建新数据库 40 使用“数据库向导” 40 定义字段显示 45 控制字段数据输入 46 控制字段数据输入 47 设置默认字段值 47 设置有效性规则和有效性说明 48 控制记录的数据输入 50 设置表的有效性规则 50 设置触发器 51 管理数据库记录 51 第二部分:查找信息 53 第四章:检索数据 54 创建查询 54 定义结果 58 组织输出结果 61 运行查询 65 定制查询 68 第五章:使用视图更新数据 74 创建视图 74 连接远程数据 77 更新数据 81 定制视图 84 第六章:查询和更新多表 88 对多个表和视图进行查询 88 在视图中使用多个表 92 在视图中使用多个远程表 94 在视图中合并本地和远程数据 95 目 录 第三部分:显示信息 97 第七章:设计报表和标签 98 计划报表布局 98 创建报表布局 100 创建邮件标签布局 102 修改布局 103 增添报表控件 106 按布局分组数据 116 定制布局 121 预览和打印报表或标签 130 第八章:用表单管理数据 132 创建表单 132 向表单中添加控件 136 修改表单 144 定制表单 148 第四部分:与其他应用程序一起使用 Visual FoxPro 151 第九章:导入和导出数据 152 理解导入和导出 152 导入数据 154 追加数据 157 导出数据 162 第十章:与其他应用程序共享信息 168 快速共享信息 169 动态共享数据 171
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值