第一章 Delphi 4的IDE 1
1.1 IDE的主窗口 1
1.2 菜单栏 2
1.2.1 File菜单 2
1.2.2 Edit菜单 6
1.2.3 Search菜单 8
1.2.4 View菜单 11
1.2.5 Project菜单 16
1.2.6 Run菜单 19
1.2.7 Component菜单 21
1.2.8 Database菜单 22
1.2.9 Tools菜单 22
1.2.10 Workgroups菜单 23
1.2.11 Help菜单 23
1.3 工具栏 24
1.4 元件选项板 26
1.4.1 Standard页 26
1.4.2 Additional页 27
1.4.3 Win32页 28
1.4.4 System页 28
1.4.5 Internet页 29
1.4.6 Data Access页 30
1.4.7 Data Controls页 30
1.4.8 Midas页 31
1.4.9 Decision Cube页 31
1.4.10 QReport页 32
1.4.11 Dialogs页 32
1.4.12 Win 3.1页 33
1.4.13 Samples页 33
1.4.14 ActiveX页 34
1.4.15 自定义元件选项板 34
1.5 Object Inspector 35
1.6 代码编辑器 36
1.6.1 代码编辑器的窗口 37
1.6.2 代码导航 38
1.6.3 在代码编辑器中获得帮助和提示 38
1.6.4 装订区 38
1.6.5 代码浏览器 39
1.7 CodeInsight 40
1.7.1 类自动完成 40
1.7.2 代码模板 41
1.7.3 代码自动完成 41
1.7.4 参数提示 42
1.7.5 计算提示 42
1.8 自定义代码编辑器 42
1.8.1 设置编辑器的选项 43
1.8.2 设置代码编辑器的显示和字体选项 44
1.8.3 设置代码编辑器的颜色 45
1.8.4 自定义Code Insight 46
1.9 对象库 47
1.9.1 New页 47
1.9.2 ActiveX页 48
1.9.3 Multitier页 48
1.9.4 Forms页 49
1.9.5 Dialogs页 50
1.9.6 Projects页 50
1.9.7 Data Modules页 51
1.9.8 Business页 51
1.9.9 New Items 对话框上的快捷菜单 52
1.9.10 在不同的项目间共享对象库 52
1.9.11 在同一个项目内共享对象库 53
1.9.12 代码重用的方式 53
1.9.13 使用对象库中的项目模板 53
1.9.14 自定义对象库 54
1.10 对象浏览器 56
1.10.1 对象浏览器的窗口 56
1.10.2 对象浏览器的基本操作 57
1.10.3 过滤器 57
1.11 设置IDE的选项 57
1.11.1 Preferences页 58
1.11.2 Library页 59
1.11.3 Browser页 60
1.11.4 Explorer页 60
第二章 Component与Form 63
2.1 把元件加到Form上 63
2.2 在Form上选择元件 64
2.3 元件的重设尺寸、移动和删除 65
2.4 元件的剪切、复制、粘贴 65
2.5 在Form上对齐元件 66
2.6 把元件分组 66
2.7 向项目中加入新的Form 67
2.8 在多个Form或单元间切换 67
2.9 从一个Form中调用另一个Form 68
2.10 与其他项目共享Form 69
2.11 把Form以ASCII格式存储 70
2.12 使用Form模板和向导 71
第三章 特性与事件 73
3.1在设计期修改元件的特性 73
3.2 在运行期修改元件的特性 74
3.3 特性编辑器 75
3.3.1 直接键入编辑器 75
3.3.2 下拉列表编辑器 75
3.3.3 对象列表编辑器 76
3.3.4 对话框编辑器 76
3.3.5 嵌套编辑器 77
3.3.6 集合编辑器 77
3.3.7 两个特殊的特性 78
3.4 生成新的事件句柄 78
3.5 建立默认的事件句柄 79
3.6 定位已有的事件句柄 80
3.7 重用事件句柄 80
3.8 删除事件句柄 81
3.9 处理由用户产生的事件 82
3.9.1 鼠标事件 82
3.9.2 鼠标拖曳 82
3.9.3 键盘 84
3.10 处理与菜单有关的事件 85
第四章 项目管理 87
4.1 什么是项目 87
4.1.1 项目文件 87
4.1.2 Form和单元文件 88
4.1.3 其他类型的文件 88
4.2 有关项目的基本操作 89
4.3 项目管理器 90
4.3.1 项目管理器的工具栏和状态栏 90
4.3.2 项目管理器的快捷菜单 91
4.4 管理项目组 92
4.4.1 怎样建立项目组 92
4.4.2 在项目组中加入DLL项目 92
4.4.3 在项目组中加入BAT项目 93
4.4.4 编译项目组 93
4.5 与其他项目共享文件 94
4.6 选择项目模板 94
4.7 编译、重建和运行项目 95
4.8 设置项目选项 95
4.8.1 指定项目的主Form 95
4.8.2 指定应用程序的标题、图标和帮助文件 96
4.8.3 设置项目的搜索路径 97
4.8.4 设置项目的版本信息 98
4.8.5 设置包的选项 99
4.8.6 设置编译器的选项 100
4.8.7 设置链接器的选项 101
第五章 调试器 103
5.1 错误类型 103
5.1.1 设计期错误 103
5.1.2 编译期错误 103
5.1.3 运行期错误 104
5.1.4 逻辑错误 104
5.1.5 怎样尽可能地减少错误 104
5.2 设置调试器的选项 104
5.2.1 General页 105
5.2.2 Event Log页 105
5.2.3 Language Exceptions页 106
5.2.4 OS Exceptions页 107
5.3 自定义调试器的颜色 108
5.4 控制程序的运行 109
5.4.1 单步执行 109
5.4.2 跟踪执行 109
5.4.3 跳过一段代码 110
5.4.4 返回到执行点 110
5.4.5 暂停运行 110
5.4.6 重新开始运行 111
5.4.7 命令行参数 111
5.5 断点 111
5.5.1 源代码断点 112
5.5.2 机器指令断点 113
5.5.3 数据断点 113
5.5.4 模块断点 114
5.5.5 断点列表窗口 114
5.5.6 删除断点 115
5.5.7 禁止和允许断点 115
5.5.8 设置断点的属性 115
5.6 监视表达式的值 116
5.6.1 观察窗口 116
5.6.2 计算和修改表达式的值 117
5.6.3 计算提示 118
5.6.4 Inspector窗口 118
5.7 几个与调试有关的窗口 120
5.7.1 CPU窗口 120
5.7.2 线程状态窗口 121
5.7.3 Call Stack窗口 122
5.7.4 模块窗口 122
5.7.5 事件记录窗口 123
5.8 调试动态链接库 124
5.9 远程调试 124
5.9.1 本地的配置 125
5.9.2 远程机器的配置 125
5.10 多进程调试 126
5.11 Assert例程 127
5.12 其他调试手段 128
第六章 包(Package) 129
6.1 什么是包 129
6.2 怎样安装运行期包 130
6.3 怎样安装设计期包 132
6.4 建立自己的包 134
6.5 包的源文件 136
6.6 怎样编译包 137
6.7 包的版本信息 138
6.8 怎样发布包 139
6.9 包收集器 139
第七章 词法 141
7.1 注释 141
7.2 标识符 142
7.3 保留字、指示字和特殊符号 142
7.4 运算符 143
7.4.1 对象限定运算符 144
7.4.2 指针动态变量运算符 144
7.4.3 @运算符 144
7.4.4 位运算符 146
7.4.5 算术运算符 146
7.4.6 逻辑运算符 147
7.4.7 关系运算符 147
7.4.8 字符指针运算符 148
7.4.9 运行期类型识别运算符 148
7.4.10 类型强制转换符 148
7.4.11 集合运算符 149
7.4.12 字符串运算符 149
第八章 数据类型 151
8.1 简单类型 151
8.1.1 有序类型概述 151
8.1.2 有序类型中的整型 152
8.1.3 有序类型中的布尔类型 154
8.1.4 有序类型中的字符类型(Char) 154
8.1.5 枚举类型(Enumerated) 155
8.1.6 子界类型(SubRange) 157
8.1.7 简单类型中的实型 158
8.2 字符串类型 160
8.2.1 短字符串 160
8.2.2 长字符串 160
8.2.3 宽字符串 161
8.2.4 字符串常量 161
8.2.5 处理以NULL结束的字符串的标准例程 163
8.3 数组——构造类型之一 163
8.3.1 怎样声明数组类型 163
8.3.2 怎样声明数组变量 164
8.3.3 怎样访问数组中的元素 164
8.3.4 多维数组 164
8.3.5 零基准数组 165
8.3.6 数组的整体赋值 165
8.3.7 把数组作为过程或函数的形参 165
8.3.8 开放式数组 165
8.3.9 多维的开放式数组 167
8.4 集合——构造类型之二 168
8.4.1 集合类型的声明 168
8.4.2 集合类型常量的表示方法 169
8.4.3 集合能参加的运算 170
8.5 记录——构造类型之三 170
8.5.1 记录类型的声明 171
8.5.2 如何访问记录中的字段 171
8.5.3 记录的整体赋值 171
8.5.4 记录与数组 172
8.5.5 With语句 172
8.5.6 记录的可变部分 173
8.6 文件——构造类型之四 174
8.6.1 文件类型的声明 175
8.6.2 文件类型的操作 175
8.6.3 用于文件操作的例程 176
8.6.4 文本文件 177
8.7 指针类型 177
8.7.1 指针类型的声明 178
8.7.2 指针的操作 178
8.7.3 无类型指针 180
8.8 过程类型 181
8.8.1 过程类型的声明 181
8.8.2 过程类型的用法 181
8.8.3 方法指针 183
8.9 可变类型(Variant) 183
8.9.1 可变类型变量的声明和赋值 184
8.9.2 可变数组 184
8.9.3 可变类型的变量能参加的运算 186
8.9.4 可变类型与OLE自动化对象 187
8.10 变量 188
8.10.1 变量的声明 188
8.10.2 Absolute子句 188
8.10.3 全局变量和局部变量 189
8.10.4 线程局部变量 189
8.11 类型常量 190
8.11.1 简单类型的常量 190
8.11.2 指针类型的常量 191
8.11.3 过程类型的常量 191
8.11.4 字符串类型的常量 192
8.11.5 数组类型的常量 192
8.11.6 集合类型的常量 193
8.11.7 记录类型的常量 194
8.12 类型相容、赋值相容以及类型强制转换 195
8.12.1 类型完全一致 195
8.12.2 类型相容 196
8.12.3 赋值相容 196
8.12.4 类型强制转换 197
第九章 语句和块 199
9.1 声明语句 199
9.1.1 标号声明语句 199
9.1.2 常量声明语句 200
9.1.3 资源字符串 201
9.1.4 类型声明语句 201
9.1.5 变量声明语句 202
9.1.6 过程声明语句 202
9.1.7 函数声明语句 202
9.1.8 输出项声明语句 202
9.1.9 声明语句的顺序 203
9.2 赋值语句 203
9.3 Goto语句 204
9.4 复合语句 204
9.5 条件语句 205
9.5.1 If语句 205
9.5.2 Case语句 206
9.6 循环语句 207
9.6.1 For语句 207
9.6.2 While语句 208
9.6.3 Repeat语句 209
9.6.4 Break和Continue 209
9.7 With语句 210
第十章 过程和函数 213
10.1 调用Delphi预定义好的过程和函数 213
10.2 过程的声明、定义和调用 214
10.2.1 声明和定义 214
10.2.2 怎样调用过程 215
10.3 函数的声明、定义和调用 215
10.3.1 声明和定义 215
10.3.2 调用函数 216
10.3.3 值是怎样返回的 217
10.3.4 Result变量 217
10.4 调用约定 218
10.5 过程或函数中变量的作用域问题 218
10.6 指示字 219
10.6.1 Assembler指示字 219
10.6.2 External指示字 220
10.6.3 Forward指示字 220
10.6.4 Overload指示字 221
10.7 参数 221
10.7.1 数值参数 222
10.7.2 常量参数 222
10.7.3 变量参数 222
10.7.4 外部参数 223
10.7.5 无类型参数 223
10.7.6 用短字符串和数组作为参数 224
10.7.7 开放数组参数 224
10.7.8 用过程或函数作为参数 225
10.7.9 指定参数的默认值 225
10.8 嵌套和递归 226
第十一章 程序结构 229
11.1 Program单元 229
11.2 子程序单元(Unit) 230
11.2.1 单元首部 231
11.2.2 Interface部分 231
11.2.3 Implementation部分 231
11.2.4 Initialization部分 232
11.2.5 Finalization部分 233
11.3 退出码 233
11.4 引用 234
第十二章 异常处理 237
12.1 为什么要使用异常处理 237
12.2 异常处理的语法 238
12.2.1 Try…Except结构 239
12.2.2 Try…Finally结构 240
12.2.3 嵌套 242
12.3 默认的异常处理句柄 242
12.4 定义自己的异常 244
12.5 在异常处理句柄中再次触发异常 246
第十三章 面向对象编程 249
13.1 概述 249
13.2 声明 250
13.3 字段 251
13.4 方法 252
13.4.1 方法的声明和定义 252
13.4.2 静态方法 254
13.4.3 虚拟方法 255
13.4.4 动态方法 256
13.4.5 抽象方法 256
13.4.6 消息处理方法 256
13.4.7 Overload指示字 257
13.4.8 构造和析构 258
13.4.9 类方法 260
13.5 特性 261
13.5.1 声明特性的语法 261
13.5.2 特性子句 262
13.5.3 索引子句 264
13.5.4 特性重载 265
13.5.5 数组特性 266
13.6类成员的可见性 268
13.6.1 Public 268
13.6.2 Published 269
13.6.3 Private 269
13.6.4 Protected 270
13.6.5 Automated 270
13.7 类引用 270
第十四章 动态链接库 273
14.1 怎样访问DLL中的例程 273
14.1.1 静态引入方式 273
14.1.2 动态引入方式 274
14.1.3 动态引入方式的完整示例 276
14.1.4 引入整个单元 277
14.2 怎样写DLL 278
14.3 怎样在DLL中输出例程 278
14.3.1 声明要输出的例程 278
14.3.2 引出例程 279
14.4 把Form当作DLL重用(Reuse) 281
14.5 初始化代码和退出码 282
14.5.1 对DLL的全局变量初始化 282
14.5.2 设置DLLProc变量 282
14.5.3 设置ExitProc变量 284
14.6 ShareMem单元 284
第十五章 DLL的高级用法 285
15.1 单调函数 285
15.2 DLL中的模式Form 289
15.3 DLL中的无模式Form 290
15.4 DLL中的虚拟类 291
15.4.1 一个典型的虚拟类 291
15.4.2 虚拟方法表 294
15.4.3 怎样访问虚拟方法 294
15.5 DLL中的全局变量 296
15.5.1 创建文件映射对象 296
15.5.2 映射到进程的地址空间 297
15.5.3 释放文件映射对象 297
15.5.4 一个典型的示例 297
第十六章 嵌入式汇编 301
16.1 嵌入式汇编的语法 301
16.2 嵌入式汇编语句 302
16.2.1 标号 302
16.2.2 前缀 303
16.2.3 操作码、伪指令和操作数 303
16.3 嵌入式汇编的保留字和特殊符号 304
16.3.1 寄存器符号 304
16.3.2 运算符 304
16.3.3 预定义的数据类型符号 305
16.3.4 几个特殊符号 305
16.3.5 保留字与自定义符号重名的问题 305
16.4 嵌入式汇编的表达式 306
16.4.1 与Object Pascal表达式的区别 306
16.4.2 表达式的种类 307
16.4.3 表达式的数据类型 308
16.4.4 表达式中的运算符 308
16.4.5 表达式中的符号 309
16.4.6 表达式中的常量 310
第十七章 与C++共享代码 311
17.1 混合编程的方式 311
17.2 调用约定 312
17.3 怎样在Delphi中用C++的OBJ文件 312
17.4 怎样在C++中用Delphi的OBJ 313
17.5 C++怎样调用Object Pascal的DLLs 314
17.6 Opject Pascal怎样使用C++中的类 316
17.7 虚拟方法表 317