第一篇高级程序设计基础 1
第一章 程序和单元 1
1.1 程序 1
1.2单元 1
1.3什么是单元 1
目 录 1
1.4单元的结构 2
1.4.1接口部分 2
1.4.3初始化部分 3
1.4.2实现部分 3
1.5如何使用单元 4
1.5.1引用单元说明 4
1.5.2实现部分 的USES子句 7
1.6标准单元 9
1.7编写用户单元 10
1.7.1编译单元 10
1.7.2例子 11
1.7.3单元和大程序 12
1.7.5 TPUMOVER工具 13
1.7.4用作覆盖的单元 13
第二章 覆盖程序设计 14
2.1 覆盖管理 14
2.1.1覆盖缓冲区管理 16
2.2.3 OvrLoadCount 17
2.2.4 OvrFileMode 17
2.2.5 OvrReadBuf 17
2.2.2 OvrTrapCount 17
2.2.1 OvrResult 17
2.2常量和变量 17
2.2.6结果码 19
2.3有关的过程和函数 19
2.3.1 OvrInit 19
2.3.2 OvrInitEMS 19
2.3.3 OvrSetbuf 20
2.3.4 OvrGetBuf 20
2.3.5 OvrClearBuf 20
2.3.6 OvrSetRetry 20
2.4.2 Far调用需求 21
2.4.1覆盖代码的产生 21
2.4覆盖程序设计 21
2.3.7 OvrGetRetry 21
2.4.3初始化覆盖管理模块 22
2.4.4覆盖单元的初始化部分 24
2.4.5不能用来覆盖的单元 24
2.4.6覆盖块的调试 25
2.4.7覆盖模块的外部例程 25
2.5在.EXE文件中使用覆盖 26
第三章 使用数学协处理器 27
3.2扩展型精度运算 28
3.1 8087数据类型 28
3.3实数的比较 29
3.4 8087的运算栈 29
3.5 8087的实数输出 30
3.6使用8087的单元 31
3.6.18087的检测 31
3.6.2用汇编语言仿真8087 32
4.1 Turbo Pascal内存映像 33
4.2堆管理程序 33
第四章 内存管理 33
4.2.1析构函数 34
4.2.2空闲块表 37
4.2.3 HeapError变量 38
4.3直接内存访问 38
第五章 高级输入和输出技术 40
5.1文本文件设备驱动程序 40
5.1.4 Close函数 41
5.1.3 Flush函数 41
5.1.2 InOut函数 41
5.1.1 Open函数 41
5.2直接端口存取 42
第六章 项目管理 43
6.1程序组织 43
6.1.1初始化 44
6.2 Build和Make选项 44
6.2.1 Make选项 45
6.2.2 Build选项 45
6.3独立的实用程序MAKE 45
6.3.1 MAKE使用示例 46
6.4条件编译 47
6.4.1DEFINE和UNDEF指令 48
6.4.2预定义符号 48
6.4.3 IFDEF和IFNDEF指令 50
6.4.4 IFOPT指令 51
6.5代码优化 52
7.1.2运行错误 53
7.1.1编译错误 53
7.1程序错误类型 53
第七章 调试Turbo Pascal程序 53
7.1.3逻辑错误 54
7.2 Turbo Pascal集成调试器 54
7.2.1调试器的功能 54
7.2.2进入和退出调试器 55
7.2.3跟踪程序 56
7.2.4单步执行程序 58
7.2.5使用断点 59
7.2.6监测值 61
7.2.7计算与修改 65
7.2.8游历 67
7.3面向对象的调试 68
7.3.1单步执行并跟踪方法调用 68
7.3.2在计算窗口中的对象 69
7.3.3 Find Procedure命令中的表达式 69
7.4有关问题 69
7.4.1 如何编写便于调试的程序 69
7.4.2内存问题 70
7.4.4不能调试的代码 72
7.4.3递归子程序 72
7.4.5常见错误 73
7.5错误处理 73
7.5.1输入/输出错误检测 73
7.5.2范围检查 74
7.5.3其他错误处理能力 75
第二篇面向对象程序设计技术 76
第八章 面向对象程序设计概述 76
8.1什么是对象 76
8.3对象与记录的主要区别 77
8.2继承 77
8.4方法 79
8.4.1代码/数据封装 80
8.4.2方法定义 80
8.4.3对象的数据域与方法的形式参数 82
8.4.4在单元中定义对象 82
8.4.5封装 85
8.4.6继承静态方法 89
8.4.8前期联编与迟后联编 90
8.4.7虚方法及其多态性 90
8.4.9对象类型的兼容性 91
8.4.10多态对象 92
8.4.11 虚方法 93
8.4.12迟后联编例子 95
8.4.13使用过程还是方法 96
8.4.14对象的扩展性 102
8.4.15使用静态方法还是虚方法 105
8.4.16动态对象 105
8.4.17析构函数 107
8.5小结 113
第九章 面向对象程序设计实例 115
9.1 窗口对象 115
9.1.1屏幕类 115
9.1.2屏幕窗口 116
9.1.3 镶边窗口 117
9.1.4转换类 125
9.2屏幕对象及屏幕类编码 126
10.1.2在计算窗口中的对象 135
10.1.1 单步执行并跟踪方法调用 135
10.1集成环境中面向对象的调试 135
第十章 面向对象的调试 135
1O.1.3 Find Procedure命令中的表达式 136
10.2在Turbo Debugger中调试面向对象的功能 136
10.2.1单步执行和跟踪方法调用 136
10.2.2作用域 136
10.2.3 Evaluate窗口 137
10.2.4 Watch窗口 138
10.2.5 Hierarchy窗口 138
10.2.6对象类型/类考察窗口 139
10.2.7对象实例考察窗口 140
第十一章 面向对象高级程序设计 143
11.1对象的内部数据格式 143
11.1.1 虚方法表 144
11.1.2 SizeOf函数 144
11.1.3TypeOf函数 145
11.1.4虚方法调用 145
11.2方法调用约定 145
11.2.2 New和Dispose的扩充 146
11.2.1 构造函数和析构函数 146
11.3汇编语言方法 148
11.4构造函数的纠错 151
第三篇高级程序设计进阶 155
第十二章 内存驻留程序的设计 155
12.1 内存驻留的概念 155
12.1.1再入的问题 156
12.1.2寄存器转换 156
12.1.3信息保护问题 156
12.1.5向量的捕俘 157
12.1.6设立热键标志 157
12.1.4栈开关的使用 157
12.2TSR程序的激活 158
12.2.1 使用系统时钟来激活 158
12.2.2使用中断28h来激活 158
12.3与内存驻留程序之间的通讯 158
12.3.1修改PSP和DTA 159
12.4关键性错误 160
12.5 Control Break问题 160
12.6退出TSR程序 161
12.7TSRU单元 162
12.8内存驻留程序示例 174
第十三章 鼠标器的使用 181
13.1 鼠标的工作原理 181
13.2鼠标驱动程序 181
13.3虚屏 182
13.4鼠标指示器 182
13.4.1 图形鼠标指示器 182
13.4.2文本鼠标指示器 184
13.5 BINU单元 184
13.6.1 MOUSU数据声明 186
13.5.1调用鼠标服务程序 186
13.6 MOUSU单元 186
13.6.2 MOUSU过程 187
13.7鼠标演示程序 211
14.2.1 Int20h指令 216
14.2.2 DOS内存顶部 216
14.2.3 DOS调用 216
14.2 PSP的结构 216
14.1 DOS和程序段前缀 216
第十四章 程序段前缀 216
14.2.4结束、中止、关键性错误处理程序 217
14.2.5父PSP段 217
14.2.6文件句柄表 218
14.2.7环境段 218
14.2.8 DOS栈保存区 218
14.2.9 FHT长度 218
14.2.10 FHT地址 218
14.2.11 Int21h指令 218
14.3.1 PrefixSeg常量 219
14.3在TurboPascal中使用PSP 219
14.3.2PSP数据类型 219
14.2.13命令行 219
14.2.14磁盘传送区 219
14.2.12文件控制块 219
14.3.3计算程序所需的内存 220
14.3.4命令行的捕俘 221
14.3.5 DOS环境串的捕俘 221
14.3.6执行子程序 222
14.3.7扩展文件句柄表 223
14.4 PSPU单元 225
14.5 PSP演示程序 230
第四篇高级图形程序设计 233
第十五章 图文混合处理 233
15.1 准备工作 233
1.5.2文本与图形的合成 234
15.3变量输出函数 234
15.3.1 整型数至字符串的转换 234
15.3.2实数至字符串的转换 234
15.5.1 EraseStr函数 235
15.4连接输出字符串 235
15.5其他任务 235
15.5.2块擦除 238
15.6其他应用例子 238
15.7 自动擦除 239
15.8总结 239
第十六章 图形显示在统计上的应用 242
16.1 注意事项 242
16.2统计图形的例子 242
16.3扇形图显示 243
16.4分解的扇形图 246
16.5直方图 247
16.6复合直方图 250
16.7改进单色显示 252
16.8三维图形 253
16.8.1 GraphField函数 256
16.8.2 FillPlane函数 257
16.8.3 ShowLabels函数 258
16.8.4 ShowAccounts 259
16.8.5 AddBar函数 260
16.9线图显示 261
16.9.1 CreateImages函数 262
16.9.2 LineGraph函数 263
16.10总结 266
第十七章 动画技术 282
17.1 图像动画 282
17.1.1 CreateImages函数 284
17.1.2 Savelmage函数 289
17.1.3 CreateMaze函数 290
17.1.4 StartGame函数 291
17.1.5 MoveImage函数 292
17.1.6 TakeStep函数 295
17.1.7 PositionImage函数 296
17.1.8 FlashImage函数 296
17.1.9 ClearImages函数 297
17.2形态动画 298
17.2.1保留背景图像 304
17.3总结 306
17.2.2 SetWrite(设置写模式) 306
第十八章 图形打印输出 322
18.1 Epson点阵打印机 322
18.1.1肖像方式与风景方式的比较 323
18.1.2点阵模式的判别标准 323
18.1.3字符点阵图形的计算 324
18.1.4点阵图形驱动程序PrintGraph 326
18.2激光打印驱动程序 328
18.2.2激光打印机指令码 329
18.2.1激光打印机屏幕输出程序 329
18.2.3十分之一点位置指令 330
18.3将图形字符送到激光打印机 331
18.4十六级和四级灰度调色板 331
18.5 LJGraph单元 332
18.5.1输出多份拷贝 336
18.5.2 Fmt函数 336
18.5.3 SetGrayScale函数 337
18.5.4 PrintPause函数 339
18.5.5 PromptLine函数 340
18.6.1真彩色灰度级调色板 341
18.6关于颜色和颜色映像的进一步讨论 341
19.1彩色打印机 343
19.2彩色绘图仪 343
19.2.1绘图仪的使用方法 343
第十九章 绘图仪图形输出 343
19.2.2用绘图仪画出屏幕上显示的图像 344
19.2.3绘图仪的颜色 344
19.3绘图仪的串行接口 345
19.3.1串行口的独特点 345
19.4.1串行端口通讯 347
19.4 PLOTTER实用程序 347
19.4.2绘图仪的初始化 348
19.5复制屏幕图像 349
19.5.1 SelectPen过程 351
19.5.2MatehColor函数 351
19.5.3WritePort过程 352
19.5.4Ready函数 353
19.5.5 ClosePlotter过程 353
19.6样本程序 354