Kylix开发人员指南

Kylix开发人员指南
作 者: Charles Calvert 王文龙 刘湘宁
出版社: 人民邮电出版社
丛编项:
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: 软件工具 程序设计
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  Charlie Calvert是一名程序员兼作者,同妻子(兼同事)Margie以及两只猫居住在加利福尼亚的圣克鲁斯。其著作包括《Delphi 4 Unleashed》、《C++ Builder 3 Unleashed》、《Delphi 2 Unleashed》、《Teach Yourself Windows 95 Programming in 21 Days》、《Delphi Unleashed》、《Teach Yourself Windows Programming》、《Turbo Pascal Programming 101》等。他还同妻子一道编写了一套关于Java的交互式教程,并在众多的技术杂志上发表过文章。在从欧洲、澳大利亚到远东的一些重大行业会议和大量小型会议上,Charlie发表过关于Delphi、C++等方面的主题演讲。

内容简介

Kylix是业界享有盛誉的工具软件开发公司Borland推出的Linux环境下的开发工具,是将Delphi移植到Linux环境的结果,它包含了Delphi for Windows的大部分功能。本书旨在让经验丰富的程序员快速地了解并掌握Kylix,从而降低开发Linux应用程序难度,并提高开发速度。全书分五部分,共21章。第一部分简要地介绍了Object Pascal和Kylix IDE,为读者使用Kylix进行开发工作打好了基础,其中包括Pascal的基本语法、循环、分支、操作符和递归、对象和接口以及Kylix的可视化开发工具、代码编辑工具和调试工具;第二部分介绍了CLX,包括CLX的体系结构、代码共享和重用、创建组件以及绘制图形等内容;第三部分介绍了Linux系统编程,包括控制台应用程序、内存管理、文件I/O以及进程和线程等;第四部分介绍了数据库开发,包括DataCLX、数据-感知组件、数据访问层、数据库优化等内容;第五部分介绍了Web开发,包括Apache Web服务器应用程序和Web服务器开发等内容。本书以简单易懂的方式全面阐述了Kylix中所有主要的开发技术,并通过范例程序提供了大量的代码,可供中高级程序员学习使用Kylix进行Linux应用程序开发时参考。

图书目录

第一部分了解Delphi和Linux 1

第1章可视化开发 2

1.1KylixIDE 2

1.1.1本章内容简介 2

1.1.2IDE概述 3

1.2菜单 3

1.2.1菜单快捷键 4

1.2.2快捷菜单 4

1.2.3向菜单中添加新工具 4

1.2.4工具栏 5

1.3可视化开发 6

1.3.1组件面板 7

1.3.2软件包 8

1.3.3使用Kylix窗体设计器 9

1.3.4排列组件 9

1.3.5对象查看器 10

1.3.6配置对象查看器 11

1.3.7编辑xfm文件 11

1.3.8Constraints和Anchors 13

1.3.9Tab顺序 14

1.3.10对象查看器和事件 14

1.4Kylix单元的源代码 14

1.4.1Kylix单元的接口 15

1.4.2Kylix单元的实现 17

1.4.3FormCreate方法哪里去了 18

1.5Pascal源文件 18

1.5.1Delphi工程文件 19

1.5.2单元 19

1.5.3Pascal程序的入口 20

1.5.4uses子句和循环单元引用 20

1.6Kylix中的编译阶段 22

1.7使用容器 22

1.7.1PannelDesign程序 24

1.8本章小结 30

第2章循环.分支.运算符和递归 31

2.1术语定义:语句和表达式 31

2.1.1表达式 31

2.1.2语句 31

2.2if语句 32

2.3Case语句 34

2.4for循环 35

2.5While语句 37

2.6repeat语句 39

2.6.1循环和分支小结 40

2.7运算符简介 41

2.7.1赋值运算符 41

2.7.2除法运算符 41

2.7.3布尔和逻辑运算符 42

2.7.4关系运算符 42

2.7.5获取变量的地址 43

2.7.6执行字符串和指针运算的运算符 43

2.7.7关于运算符的最后说明 44

2.8递归 44

2.8.1阶乘 44

2.8.2Fibonacci数 45

2.8.3递归绘图 47

2.9本章小结 48

第3章Pascal基本语法 49

3.1本章内容 49

3.2整型和浮点型 49

3.2.1序数类型 50

3.2.2使用序数的Pascal函数 51

3.2.3枚举类型 53

3.2.4浮点型 54

3.3Pascal字符串 58

3.3.1ShortStrings 59

3.3.2AnsiString 59

3.3.3PChar 61

3.3.4WideString 62

3.4强制类型转换 62

3.4.1as.is运算符和Sender参数 63

3.5数组 64

3.5.1数组常量 65

3.5.2动态数组和对象数组 65

3.5.3调试数组:启用范围检查功能 68

3.6记录 69

3.6.1记录和with语句 69

3.6.2Variant记录 70

3.7指针 73

3.7.1使用指向对象的指针 74

3.7.2指针.构造函数和析构函数 76

3.7.3虚拟方法和override编译指令 77

3.8ObjectPascal没有的特性 77

3.9本章小结 77

第4章对象和接口 79

4.1Kylix的对象模型 79

4.1.1在哪里声明对象 79

4.1.2ObjectPascal类的作用域规则 81

4.1.3互相引用对方的类的作用域问题 81

4.1.4声明方法 82

4.1.5ObjectPascal的继承模型:virtual和override 82

4.1.6在声明中使用dynamic而不是virtual 83

4.1.7调用覆盖方法的祖先:inherited 85

4.1.8abstract编译指令 86

4.1.9overload编译指令 87

4.1.10类实例的实例化和释放 87

4.1.11类方法 88

4.2接口 88

4.2.1接口类型 89

4.2.2接口不是类 89

4.2.3不能直接实现接口 90

4.2.4用类来实现接口 90

4.2.5调用接口的方法 93

4.2.6释放接口 94

4.2.7一个对象的多个接口 95

4.2.8方法解析子句 98

4.2.9IInterface的声明 99

4.2.10接口的实质 101

4.2.11使用接口的理由 102

4.2.12维护和更新接口 103

4.3Variant 104

4.4RTTI和浮点类型 109

4.5框架 114

4.5.1创建框架 114

4.5.2重用框架 116

4.6命令行编译器 117

4.7本章小结 117

第5章编辑器和调试器 118

5.1源代码编辑器 118

5.2编辑器和设计器 118

5.2.1在编辑器中影响可视化工具 119

5.3工程管理器 121

5.3.1代码浏览器 122

5.3.2定制代码浏览器的外观 124

5.3.3代码生成:在编辑器和浏览器中完成类 125

5.4浏览器 129

5.5To-Do列表 130

5.5.1工具窗口 132

5.5.2保存桌面和调试桌面 133

5.6神奇工具:CodeInsight 133

5.6.1代码完成化(CodeCompletion)的奇迹 133

5.6.2ParameterInsight的奇迹 134

5.6.3CodeInsight:浏览源代码 135

5.6.4代码模板将使您成为世界上最快的打字员 136

5.7使用调试器 137

5.7.1使用调试器单步调试代码 138

5.7.2调试器不能单步调试的代码:优化 139

5.7.3不能单步调试的代码:链接器 140

5.7.4在WatchList窗口监视代码 140

5.7.5查看变量 140

5.7.6使用断点 141

5.8使用异常来清理代码 142

5.8.1声明自己的异常类 144

5.8.2finally子句和再次引发异常 144

5.8.3在调试器中使用CPU窗口 145

5.8.4在线帮助 146

5.9ElfDebug服务器 147

5.9.1ElfDebugHelp单元提供的服务 155

5.9.2DebugHelp单元的输出 156

5.9.3向文本文件发送信息 157

5.9.4向HTTP服务器发送信息 158

5.9.5在服务器端接收信息 159

5.9.6所有者绘制的列表框 159

5.10本章小结 160

第6章理解Linux环境 161

6.1Linux环境概貌 161

6.2Linux桌面 162

6.2.1桌面分析 162

6.3X体系结构概述 163

6.3.1X的历史 163

6.3.2名称XWindow系统 164

6.3.3XWindow系统简介 164

6.3.4网络和X客户/服务器模型 164

6.3.5X服务器和X客户之间的细管道 164

6.3.6连接到远程服务器 165

6.4使用Kylix进行X编程 165

6.4.1X中的"Hello,World"程序 167

6.4.2使用XCreatWindow创建主窗口 172

6.4.3层叠顺序 176

6.4.4创建图形场境 177

6.4.5事件循环 177

6.4.6X编程小结 179

6.5窗口管理器 179

6.5.1为何创建窗口管理器 179

6.5.2窗口管理器的强大功能 179

6.5.3修改和查询窗口管理器 180

6.6X工具包 180

6.6.1控件.组件和部件 180

6.7桌面简介 181

6.7.1KDE桌面 181

6.7.2GNOME桌面 181

6.8本章小结 181

第二部分CLX 183

第7章CLX体系结构和可视化开发 184

7.1Qt和CLX 184

7.1.1FreeCLX 187

7.2Qt和事件 187

7.2.1难以理解的CLX消息 188

7.2.2Qt信号和槽口 189

7.2.3Qt应用程序对象和事件循环 191

7.2.4在ObjectPascal中调用Qt代码 191

7.3使用CLX编写的Slider程序 192

7.4CLX.Qt和Hook对象 193

7.4.1CLX的不足之处:EventFilterMojo 196

7.5使用样式 200

7.6使用资源 202

7.6.1字符串资源 203

7.7创建非矩形窗体 203

7.7.1窗体继承 204

7.7.2覆盖Widget的初始值 205

7.7.3绘制窗体的外形 209

7.8本章小结 210

第8章代码的包装和共享 211

8.1组件理论 211

8.2从已有的组件派生出新的组件 212

8.2.1保存工作 215

8.2.2定义组件的特性 216

8.2.3测试组件 217

8.3软件包:将组件放置到组件面板中 218

8.3.1软件包简介 218

8.3.2软件包和LD_LIBRARY_PATH 218

8.3.3软件包和组件面板 220

8.4创建软件包 220

8.4.1设计阶段软件包和运行阶段软件包 221

8.4.2图标:使用DCR文件 222

8.4.3同时打开软件包和工程 222

8.4.4requires子句 222

8.4.5注册组件 223

8.5运行阶段软件包 223

8.6在运行阶段进入软件包 226

8.7创建共享对象 226

8.7.1在Kylix程序中调用库中的例程 229

8.8动态加载共享对象 229

8.9本章小结 230

第9章创建组件 231

9.1使用消息 231

9.1.1简单消息:一个有用的控件 231

9.1.2响应消息 233

9.1.3在组件中使用FilteEvents 234

9.2扩展Elves单元 236

9.2.1为CLX组件命名的艺术 245

9.2.2TElfBigEdit控件和TElfEmtptyPanel控件 245

9.2.3创建复合组件 246

9.2.4为组件创建published属性 248

9.2.5导出属性 249

9.3另一个复合组件 249

9.4创建一个由TLabel和TEdit组成的组件 254

9.4.1改变标签的位置 262

9.4.2ElfLabelEdit及其与Windows的兼容性 263

9.4.33D文本标签 263

9.5本章小结 264

第10章高级组件设计技术 266

10.1属性 266

10.1.1声明属性 267

10.1.2在对象查看器中查看属性 269

10.2再谈属性 269

10.3从空白开始创建组件 276

10.4Clock组件 278

10.4.1理解TElfClock 283

10.4.2ClockPaint方法: 284

10.4.3TElfColorClock组件 284

10.4.4创建别致的时钟 285

10.5为组件创建图标 287

10.6ToolsAPI:属性编辑器和组件编辑器 288

10.6.1设计阶段代码和运行阶段代码之比较 292

10.6.2Kylix中的ToolsAPI 293

10.6.3ToolsAPI和Wine 293

10.6.4ToolsAPI和接口 293

10.6.5属性编辑器 293

10.6.6再谈注册组件和组件编辑器 297

10.6.7组件编辑器 298

10.6.8关于组件维护的一些说明 299

10.7组件模板 299

10.8本章小结 300

第11章图形 301

11.1QGraphics.pas中的主要对象 301

11.2TCanvas对象 301

11.3使用Qt绘图 303

11.3.1改变坐标系 304

11.4TColor类型 305

11.5画笔 306

11.6钢笔 308

11.7创建PenMode应用程序 312

11.8字体 312

11.9绘制形状 313

11.10Mandelbrot范例 316

11.10.1绘制Mandelbrot图形 323

11.10.2绘制橡皮筋 323

11.10.3TBitmap:为Mandelbrot图形照相 324

11.10.4创建事件和处理OnPaint方法 325

11.10.5LoadResource:创建开始的场景 326

11.11虚构的3D世界 326

11.11.1伪3D世界的体系结构 327

11.11.2为游戏创建图形 329

11.11.3双重缓存和表面 329

11.11.4游戏引擎的核心代码 330

11.11.5实现ISimpleSurface和IDrawTools 350

11.11.6ISimpleSurface:创建即插即用的后端 352

11.11.7在正确的位置绘制墙段 353

11.12本章小结 355

第三部分Linux系统编程 357

第12章控制台应用程序.内存管理和文件I/O 358

12.1控制台应用程序 358

12.1.1控制台开发 359

12.1.2运行控制台应用程序 359

12.2内存管理 359

12.2.1变量和数据结构 360

12.2.2对象 360

12.3Kylix中的文件I/O 361

12.3.1传统的Pascal文件操作 361

12.3.2使用TFileStream进行文件输入/输出 363

12.3.3Linux文件的特点 365

12.3.4使用glibc命令 367

12.4本章小结 367

第13章进程和线程 368

13.1Linux中的应用程序执行方法 368

13.2Kylix线程 369

13.2.1通过线程访问内存 370

13.2.2同步错误和线程安全 371

13.2.3使用线程对象的Synchronize方法 371

13.2.4临界段 372

13.2.5多读专写同步器 372

13.2.6锁定机制 373

13.2.7线程结束和终止 373

13.2.8调试多线程应用程序 374

13.2.9有关线程的最后思考 374

13.3Linux进程控制和进程间通信 374

13.3.1创建新进程 375

13.3.2发信号给进程或删除进程 376

13.4本章小结 377

第四部分DataCLX 379

第14章DataCLX基础 380

14.1DataCLX的体系结构 380

14.2数据访问 380

14.2.1连接到数据库 380

14.2.2检索数据 381

14.3数据控件 382

14.3.1使用可视化数据控件显示数据 382

14.4典型的数据流 385

14.4.1交互式数据操纵 386

14.4.2数据发布 386

14.5配置服务器 387

14.5.1连接到InterBase 387

14.5.2连接到MySQL 388

14.5.3连接到DB2 388

14.5.4连接到Oracle 389

14.6本章小结 389

第15章使用数据-感知组件 390

15.1TSQLConnection 390

15.1.1TSQLConnection的属性 391

15.1.2TSQLConnection的方法 392

15.1.3TSQLConnection的事件 392

15.2TSQLDataSet 394

15.3TSQLQuery 394

15.4TSQLStoredProc 395

15.5TSQLTable 395

15.6TClientDataset 395

15.6.1TClientDataSet的属性 396

15.6.2TClientDataSet的方法 397

15.7TDataSetProvider 399

15.8TSQLClientDataSet 400

15.9TSQLMonitor 400

15.10一般的数据集用法模式 402

15.10.1查询 402

15.10.2查找字段 402

15.10.3参数化查询 403

15.10.4主-细关系 403

15.10.5定制明细网格 404

15.10.6计算字段 405

15.10.7本地递增搜索 405

15.10.8本地过滤 407

15.10.9书签 407

15.10.10使用存储过程 409

15.10.11客户端临时键 410

15.10.12聚合字段 411

15.11本章小结 411

第16章数据访问层 412

16.1数据访问层的目标 412

16.1.1数据访问速度最大化 412

16.1.2平台独立性 412

16.1.3易于部署 413

16.1.4使应用程序最小,占用的资源最少 413

16.1.5为高效地处理SQL和存储过程提供通用接口 413

16.1.6使驱动程序开发容易.可扩展 413

16.1.7可访问数据库特定的特性 413

16.2概貌 414

16.3MyBase数据集 414

16.3.1格式(二进制和XML) 415

16.3.2元数据 415

16.3.3约束 416

16.3.4数据 416

16.3.5字段类型 416

16.3.6特殊字段 417

16.3.7德尔塔 417

16.3.8返回给发送方 418

16.4数据库连接 419

16.4.1dbExpress抽象 420

16.4.2数据类型映射 428

16.5dbExpress驱动程序开发 428

16.5.1理解数据库厂商客户 429

16.5.2初始化环境变量 429

16.5.3连接到数据库服务器 429

16.5.4初始化语句句柄 429

16.5.5准备SQL语句 430

16.5.6传递运行阶段参数 430

16.5.7执行SQL语句 430

16.5.8绑定记录缓冲区 430

16.5.9取回记录 431

16.5.10释放句柄和断开连接 432

16.6dbExpress的核心实现 432

16.6.1SQLDriver 432

16.6.2SQLConnection 432

16.6.3SQLCommand 433

16.6.4SQLCursor 435

16.6.5SQLMetaData 436

16.7本章小结 436

第17章创建一个应用程序 437

17.1应用程序描述 437

17.2数据库定义 438

17.2.1表 438

17.2.2索引 440

17.2.3数据约束 440

17.2.4生成器 441

17.2.5存储过程 441

17.2.6触发器 443

17.3基本设计 444

17.3.1数据模块 444

17.4GUI界面 447

17.4.1显示数据 447

17.4.2编辑数据 447

17.4.3扩展功能 448

17.5Web界面 449

17.5.1格式化 449

17.5.2布局 453

17.5.3导航 455

17.6本章小结 457

第18章数据库优化 458

18.1简介 458

18.2填充数据库 458

18.3监视SQL通信 459

18.4避免长时间打开事务 459

18.5不要使用包含动词"like"的参数化查询 459

18.6避免使用主键和外键 460

18.7使用存储过程 460

18.8使用触发器 461

18.9精益求精 461

18.10参数化并准备查询以达到最佳性能 462

18.11像避免瘟疫一样避免使用fetchall 462

18.12Rob的左外连接规则 462

18.12.1设计时避免左外连接 463

18.12.2使用相关的子查询 463

18.12.3使用存储过程 463

18.12.4使用左外连接 464

18.13当数据库非常大或用户非常多时缓存查找表 464

18.14使用智能查找 464

18.15关闭元数据 465

18.16关闭同步写入,但要清楚这样做的危险 465

18.17理解数据库索引 466

18.17.1理解选择性 466

18.17.2谨慎使用外键 466

18.17.3多列索引 466

18.17.4对索引排序 466

18.17.5索引字段应尽可能少 466

18.18针对InterBase的技巧 466

18.18.1不要使用大型VarChar 466

18.18.2创建前端应用程序时总是使用远程连接 467

18.18.3将数据库的页面大小设置为2KB或4KB 467

18.18.4理解索引计划 467

18.18.5使用Gfix来设置数据库缓存缓冲区 471

18.18.6将InterBase安装在单处理器机器上 471

18.19本章小结 471

第五部分Web开发 473

第19章ApacheWeb服务器应用程序 474

19.1Web服务器应用程序 474

19.1.1CGI协议 474

19.1.2CGI表单 474

19.2ApacheWeb服务器 475

19.2.1Kylix和CGI 476

19.2.2配置CGI 478

19.2.3配置DSO 479

19.3本章小结 480

第20章Web服务器开发 481

20.1Web模块 481

20.2新建Web服务器应用程序 481

20.3WebBroker组件 483

20.3.1TWebDispatcher 484

20.3.2TWebModule 484

20.3.3TWebResponse 485

20.3.4TWebRequest 485

20.4显示内容 486

20.4.1模仿GET 488

20.5页面生成器 488

20.5.1TPageProducer 488

20.5.2HTMLDoc和HTMLFile 491

20.5.3TDataSetPageProducer 491

20.6表格生成器 497

20.6.1TDataSetTalbeProducer 497

20.6.2定制 502

20.6.3主-细关系 502

20.7本章小结 503

第21章高级Web服务器开发 505

21.1新的WebApp42 505

21.1.1Producer和ProducerContent 505

21.2dbExpress 506

21.3TDataSetTableProducer 507

21.3.1TSQLQueryTableProducer 507

21.3.2PrepareSQLQueryTableProducer 509

21.4维护状态信息 511

21.4.1胖URL 512

21.4.2Cookies 515

21.4.3隐藏字段 516

21.5高级页面生成技术 518

21.6图像 522

21.7跨平台策略 528

21.8本章小结 529