绪言 1
0.1 什么是Clipper 1
目录 1
0.2 从dBASEⅢPlus到dBASEⅣ以及它们与Clipper的比较 2
0.3 必要条件 3
所需要的配置 3
所需背景知识 3
0.4 如何使用本书 3
对本书的快速浏览 4
“平常的语言”dBASE的程序设计 4
一些约定 5
0.5 小结 5
第一部分 导论 6
第一章 透视Clipper 6
1.1 工具 6
什么是编译程序 6
为什么编译 7
Clipper的本质 7
安装Clipper 8
Clipper开发环境 8
1.2 技术说明 9
索引 9
内存变量 9
数组 10
文件 10
工作区 11
过程和函数 11
1.3 文件的类型和用途 11
数据文件(.DBF) 11
报表文件(.FRM) 12
标签文件(.LBL) 12
索引文件(.NTX或.NDX) 12
内存文件(.MEM) 12
备注文件(.DBT) 12
格式文件(.FMT) 13
程序和过程文件(.PRG) 13
替换文件(.TXT) 13
1.4 有关规则 13
有关工作区的规则 13
有关数组的规则 14
有关内存变量的规则 14
有关别名的规则 14
有关字段的规则 14
内存变量和数组的作用域 15
代码块 15
1.5 编程规则 16
数学运算 16
关系运算 17
逻辑运算 17
字符串运算 18
赋值运算符 18
表达式 19
加/减运算符 19
特殊运算符 19
宏代换 20
1.6 小结 20
第二章 Clipper与DOS 21
2.1 Clipper的内存管理 21
非常规内存管理 22
虚拟存贮管理 23
2.2 DOS环境 23
用变量控制DOS 24
用启动文件控制DOS 24
SET CLIPPER变量 25
把DOS变量传送到Clipper应用程序 26
使用用户安装 27
提供DOS服务 27
2.3 DOS开发环境 28
2.4 小结 29
第三章 Clipper程序设计 30
3.1 组织代码在两种环境下运行 31
3.2 dBASE Ⅲ Plus的初步调试 31
3.3 设计控制结构来避免错误 33
3.4 Clipper与dBASE Ⅲ Plus的区别 34
3.5 使用过程和函数 42
使用过程 43
STATIC过程 43
使用函数 44
静态的用户定义函数 44
装入过程与函数 45
建立用户定义函数 45
参数传递 46
3.6 在应用程序中使用过程和用户定义函数 47
接受参数的另一种方法 47
3.7 用户定义函数库 48
FTOC() DICE() 51
产生用户的音调的函数 51
DOLLAR() 52
3.8 小结 53
第四章 Clipper的增强功能 54
4.1 表达式替代 54
4.2 用户自定义函数 55
4.4 SET()函数 56
4.3 扩展函数的用法 56
4.5 FOR...NEXT循环 57
4.6 Clipper数组 59
4.7 建立KEY过程 60
4.8 在@...SAY...GET中的扩展功能 61
Clipper对象 61
面向对象的GET 62
4.9 屏幕变量 63
使用SET MESSAGE TO命令 64
使用@...PROMPT...MESSAGE命令 64
建立光条菜单 64
4.10 增强菜单 64
使用SET WRAP ON/OFF命令 65
使用MENU TO命令 65
操作菜单 65
生成下拉式菜单 66
4.11 低级文件处理 69
4.12 备注区和字符域处理 70
4.13 TBrowse——Clipper面向对象的浏览 72
4.14 Clipper的帮助工具 75
4.15 代码块 77
4.16 小结 79
第五章 整体组合 80
5.1 保持源代码尽可能小 80
5.2 Clipper应用程序的结构 81
5.3 Clipper内务操作 81
用模块化程序设计方法开发源代码 81
变量作用域和模块代码 83
5.4 从源代码建立.EXE文件 84
5.5 应用程序的编译和连接 84
5.6 启动编译程序 85
控制编译程序 86
用一个.CLP文件进行编译 89
建立一个.CLP文件 90
编译结束代码 90
5.7 连接.OBJ文件 91
5.8 安装RTlink 91
RTlink命令行 92
5.9 使用RTLINK 92
从脚本文件中设置选择项 92
RTLINKCMD变量 92
RTLINK.CFG 92
RTLINK和DOS的ERRORLEVEL 93
把连接信息存入文件 93
操作方式 93
RTLink关键字 94
预连接库(PLL) 98
确定预连接库的内容 98
建立用于开发的PLL 99
建立提交用户的PLL 100
5.10 使用RMAKE工具 101
建立简单的提交用户的PLL 101
RMAKE处理 102
使文件对RMAKE有效 102
RMK文件的内容 102
依赖性规则(Dependency Rules) 103
推理规则 104
RMAKE宏定义 104
RMAKE开关 105
RMAKE命令 105
双重目的的MAKE文件范例 107
5.11 小结 107
!undef !inciude !msg〈标记〉!! 107
!ifdef !ifndef !ifeq !iffile 107
第六章 调试应用程序 109
6.1 在DOS提示符下调用调试工具Debugger 110
6.2 调试工具Debugger的窗口 110
6.3 功能键 111
6.4 调试工具Debugger的菜单 112
选项File子菜单 113
选项Locate子菜单 114
选项View子菜单 114
选项Run子菜单 116
选项Monitor子菜单 117
选项Wacth子菜单 117
选项CallStack子菜单 118
6.5 监视点、跟踪点、通过点、断点 119
6.6 调试器命令 119
6.7 调试处理过程 124
6.8 浏览其它文件 124
6.10 处理运行时发生的错误 126
6.11 小结 126
6.9 使用数组 126
第七章 Clipper与网络 127
7.1 多用户程序设计 127
文件用法 128
文件锁 128
记录锁 128
7.2 Clipper的网络兼容性 128
7.3 Clipper与网络有关的命令 129
设计程序时要考虑到网络的多用户性 130
7.4 开发网络应用程序 130
NETERR()函数 130
APPEND BLANK命令 FLOCK()函数 130
SET EXCLUSIVE ON/OFF命令 USE命令 130
RLOCK()函数 UNLOCK命令 130
选择处理方式 131
上锁失败时的策略 131
7.5 在局域网上打开文件 131
用USE__UDF()函数打开一个文件 132
用APND()函数增加一个新记录 134
用RLOK()函数给当前记录加锁 135
用FLOK()给当前文件加锁 137
7.7 非数据和索引文件 138
7.6 记录和文件上锁的实现 138
7.8 有关文件的操作命令和函数 139
7.9 小结 140
第八章 Clipper的错误处理 141
8.1 错误捕获 141
8.2 使用BEGIN SEQUENCE结构 142
8.3 Clipper的错误对象 144
错误对象 144
ERRORBLOCK()函数 144
8.4 面向对象的错误处理程序 145
8.5 Clipper的错误信息 147
编译错误信息 148
警告信息 错误信息 严重错误信息 159
RTLink的错误信息 159
RMAKE错误信息 160
8.6 小结 163
第九章 Clipper的工具 164
9.1 Clipper的文件 164
9.2 Clipper的实用程序 165
9.3 使用DBU实用程序 165
9.4 使用RL实用程序 166
生成一个报表 167
建立标签文件 168
9.5 使用PE实用程序 169
9.6 小结 169
第十章 Clipper的扩展系统 170
10.1 什么是扩展系统 170
10.2 为什么在编程过程中使用C或汇编语言 170
10.3 Clipper与C的接口 171
以值的形式传递参数 171
以指针的方式传递参数 172
返回参数给Clipper 172
内存分配 173
Extend.h头文件 173
C函数模板 173
C函数样本程序 174
C源代码程序 Clipper的源代码程序 176
与Clipper一起编译C 176
连接Clipper与C Make文件样本 连接应答文件样本 177
有关C的其它版本的一些说明 177
10.4 C和汇编语言的函数 177
样本程序框架 178
有关MASM函数的例子 179
汇编语言的源程序代码 Clipper的源程序代码 183
编译、汇编及连接 183
Make文件的样本 连接文件的样本 184
调试汇编程序 184
10.5 小结 184
第二部分 应用程序 185
第十一章 应用程序 185
11.1 文件 185
11.3 程序清单 187
11.2 MAKE文件 187
第三部分 快速参考 232
第十二章 约定与元符号 232
12.1 约定 232
12.2 元符号 233
第十三章 编译指令 234
#command #translate #define #ifdef 241
#ifndef #include #undef 241
第十四章 语句 241
BEGIN SEQUENCE DECLARE* DO* DO CASE 262
DO WHILE EXTERNAL FIELD FOR...NEXT 262
FUNCTION IF LOCAL MEMVAR 262
PARAMETERS PRIVATE PROCEDURE PUBLIC 262
RETURN STATIC 262
第十五章 Clipper标准命令集 262
SET EXACT SET EXCLUSIVE* SET FILTER 345
SET DEVICE SET EPOCH SET ESCAPE 345
SET INDEX SET INTENSITY SET KEY 345
SET MARGIN SET MESSAGE SET ORDER 345
SET DEFAULT SET DELETED SET DELIMITERS 345
SET CURSOR SET DATE SET DECIMALS 345
SET COLOR* SET CONFIRM SET CONSOLE 345
SET ALTERNATE SET BELL SET CENTURY 345
SAVE SCREEN* SEEK SELECT 345
SET PATH SET PRINTER SET PRINTER TO 345
SET PROCEDURE SET RELATION SET SCOREBOARD 345
SET SOFTSEEK SET TYPEAHEAD SET UNIQUE* 345
SET WRAP SKIP SORT 345
STORE* SUM TEXT* 345
TOTAL TYPE UNLOCK 345
UPDATE USE WAIT 345
ZAP 345
第十六章 Clipper函数 345
SET FIXED SET FORMAT* SET FUNTION 345
COPY TO CREATE CREATE FROM 345
?/?? @...BOX @...CLEAR 345
@...PROMPT @...SAY...GET @...TO 345
ACCEPT APPEND BLANK APPEND FROM 345
AVERAGE CALL* CANCEL*/QUIT 345
CLEAR CLEAR ALL* CLEAR GETS 345
CLEAR MEMORY CLEAR[SCREEN] CLEAR TYPEAHEAD 345
CLOSE COMMIT CONTINUE 345
COPY FILE COPY STRUCTURE COPY STRUCTURE EXTENDED 345
RESTORE SCREEN* RUN/!* SAVE 345
DELETE DELETE FILE/ERASE DIR* 345
DISPLAY EJECT ERASE/DELETE FILE 345
FIND* GO/GOTO INDEX 345
INPUT JOIN KEYBOARD 345
LABEL FORM LIST LOCATE 345
MENU TO NOTE* PACK 345
QUIT/CANCEL* READ RECALL 345
REINDEX RELEASE RENAME 345
REPLACE REPORT FORM RESTORE 345
17.1 什么是对象 459
第十七章 Clipper对象的类 459
BREAK() BROWSE() CDOW() 459
BIN2L() BIN2W() BOF() 459
ASORT() AT() BIN21() 459
ASC() ASCAN() ASIZE() 459
ALLTRIM() ALTD() ARRAY() 459
AFILL() AINS() ALIAS() 459
ADIR()* AEVAL() AFIELDS()* 459
ACLONE() ACOPY() ADEL() 459
AADD() ABS() ACHOICE() 459
17.2 Error对象 460
Error类函数 461
Error对象的实例变量 461
17.3 Get对象 462
Get类函数 463
Get类实例变量 463
Get对象的输出方法 465
状态变化方法 光标移动方法 编辑方法 文本输入方法 467
17.4 TBrowse系统 467
TBrowse对象类 467
TBrowse类函数 468
TBrowse的输出实例变量 468
TBrowse类输出方法 469
光标移动方法 混杂方法 472
17.5 TBColumn对象和输出实例变量 472
附录A ASCII代码以及INKEY()函数的返回值 474
A.1 光标控制键 476
A.2 功能键以及Alt键组合 477
附录B 保留字 478