三、数据通讯机制
系统中建有大量的 *.DBF数据库,CAD系统中的ADS程序如何直接访问数据库中的内容是本系统必须解决的问题。*.DBF数据库有3部分组成,即文件信息部分、文件结构记录部分和文件数据记录部分。文件信息部分的字段分配见表1。
表1 文件信息部分的字段分配
0 1 3 4 8 9 10 11 12 13 32
|
标志 |
日期 |
记录总数 |
结构长度 |
记录长度 |
备用 |
|
备用 |
文字的机构部分如表2所示:
表2 文件的结构部分
1 10 11 12 13 14 15 16 17 18 19 32
|
字段名 |
备用 |
字段类型 |
偏移地址 |
段地址 |
字段长度 |
小数位 |
备用 |
|
备用 |
Borland C++3.1提供了一段读写标准二进制文件的函数以及定位文件指针的函数,即:
fread(void *ptr, size-t size, size-t n,FILE*stream);
fwrite(void*ptr, size-t size, size-t n,FILE*stream);
fseek(FILE*stream,long offset,int whence);
读写数据库时,应事先定义一个结构体类型的变量,其长度要与数据库记录长度相同,并且按每个字段的长度在结构变量中定义相应的字符型数组,数组的长度与数据库中对应字段的宽度相等,且顺序应与字段在记录中的次序一致。下面以系统对cllzq.Dbf的进行写操作为例,说明CAD与数据库的通讯接口的设计。
根据数据库主文件结构,定义一个与之相兼容的结构体:
struct rec{char xh[2];
char d max[6];
char d min[6];
char m[4];
char z[6]}record;]
在高级语言中需要随机读写数据库,因数据库文件已存在,可采用以下方式
fp=f0pen(〞c:﹨user﹨cllzq.dbf',〞r+b 〞);/*以随机读写方式打开数据库*/打开需要