首页>参考读物>计算机科学与技术>软件与程序设计

Kylix应用程序设计
作者 : (美)Cary Jensen, Loy Anderson
译者 : 辰卓工作室
出版日期 : 2002-02-01
ISBN : 7-111-09754-8
定价 : 58.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 508
开本 : 16开
原书名 : Building Kylix Applications
原出版社:
属性分类: 店面
包含CD :
绝版 : 已绝版
图书简介

本书介绍Borland公司推出的Linux平台RAD工具—Kylix,主要内容包括Kylix应用程序开发、数据库应用程序、Kylix先进特性精选和Internet应用程序开发等。
此外,本书还包含了两个附录,分别介绍如何下载和安装书中使用的示例代码以及如何访问本书的支持站点。
本书适合于所有对Kylix开发感兴趣的技术人员。

图书前言

Kylix是近年来发布的最令人期待的开发工具之一。自从Borland于1999年第一次在Philadelphia召开的Borland研讨会上示范一个Linux编译器示例以来,关于Linux下的Delphi的传闻就广泛散播。在1999年9月25日,Borland做出了正式声明,表示他们正在创建一个基于Delphi产品的、针对Linux的RAD(rapid application development,快速应用程序开发)工具。这个软件的名称为Kylix。
Kylix的开发是一项非常宏大的事业,要求Borland公司耗费大量的资源。幸运的是,在2001年3月,当Borland最终推出Kylix后,漫长的等待终于结束了。
有下面一些原因使得Kylix非常重要。首先,Kylix是第一个针对Linux操作系统的RAD工具,这使得在Linux下构建经过编译的应用程序的速度大大提高。此外,Kylix对数据库应用程序以及Web服务器扩展都提供了强大的支持。这些特性使很多熟练的程序员能很容易地进入Linux开发,这是因为他们可以重用在创建Windows应用程序时已经做过的工作。最后,Kylix代表第一个新型的开发工具,这种开发工具有一个抽象层,将源代码与编译产品隔离开来。这个抽象层由TrollTech的Qt(发音为“cute”)C库提供,使用它可以将一个单独的文件编译为可在多个操作系统下运行。
也许多年以后才可以确定,但这是一个很好的机会—Kylix将极大地改变计算领域。尽管Linux在服务器配置方面已经是一个成功的平台,但是在桌面应用程序方面,它远远落后于微软的Windows操作系统。但是有了Kylix之后,不仅可以建立强大的Linux服务器,还能轻松地装配图形最终用户应用程序。换句话说,Kylix可能会使得Linux成为可行的工作站操作系统。
关于本书
本书的写作目的是为了使读者能够快速掌握Kylix。每章的内容都循序渐进,提供了创建各种应用程序的详细信息。
本书共分为四部分。第一部分是创建Kylix应用程序时使用的基本工具的概述,包括Component Palette(组件面板)、Object Repository(对象仓库)、代码编辑器以及调试器。
第二部分深入探讨了数据库应用程序的创建。包括对dbExpress的详细讨论,以及可能用到的其他访问数据的机制。同时,包含了使用Kylix的数据识别部件来创建并执行查询、读、写数据,显示主细(master-detail)关系以及创建定制的数据视图。这一部分还包括dbExpress内部的概述,并提供了创建定制dbExpress驱动程序的信息。
第三部分包含了Kylix的大量高级主题。例如,在第13章中,你将学习到如何创建并管理多线程的执行。第14章将讲述创建和使用共享对象(so)库。这一部分还包括创建部件和使用接口的简介。
第四部分将所有知识综合在一起,讨论了Internet以及Web相关的技术。你将学到如何创建动态Web站点,包括使用数据库服务器中的数据来创建Web页面。这一部分的最后两章提供了Internet Direct的概述,这是一个组件集合,可以用来在分布式网络计算环境下创建服务器以及客户端。
本书还包括两个附录,附录A列出了一些网址,从这些网址可以下载大量的示例代码。附录B提供了本书的支持站点的URL。通过访问这些站点,你可以经常获得Kylix的最新信息,以及本书的实时信息(包括必要的修订)。
尽管我们不愿提及,但是仍要说明的是:最初发布的Kylix有一些错误。这是很正常的,从来没有哪个软件是没有缺陷的。然而,Kylix中的这些错误使得本书中使用的一些工程不能够正常工作。例如,数据库应用程序中合计(aggregate)字段的例子,如果用最初发布的Kylix来创建,则不能够正确计算它的合计值。对每个包含进来的不能得到预期结果的工程,我们都加入了一个警告信息来描述这个问题,这样你就不会认为错误的产生是因为你自己做错了。
你也许在想,为什么要保留这样的例子呢?原因很简单:它们揭示了你希望知道的重要的技巧。此外,我们期望这些问题会被Borland通过Kylix补丁或者在以后的Kylix版本中加以解决。因此,我们包含进了创建这些工程的步骤,希望它们在你正在使用的Kylix上能够工作。
本书适合的读者
无论你是想马上开始创建Linux应用程序,或者只是想更好地理解如何使用Kylix来创建Linux应用程序,这本书都将适合你。
如果你不了解Kylix,而且没有使用过Delphi,那么你将会发现本书中所提供的解释和描述将会使你在这些方面得到迅速提高。如果你现在是一个Delphi开发人员,我们在书中包含了能够帮助你更好地理解这两个强大开发环境之间的关系的信息。
关于代码
几乎在本书的每一章中都给出了在Kylix中创建工程的逐步指导。你可以按照提供的步骤来构建这些工程,也可以从示例代码下载中获取完整的工程。类似地,在某些章中,我们会提到完整的工程而不是手工输入的内容。这是因为由于工程的复杂性,使得键入代码成为非常长或者很复杂的任务。这些工程也可以在示例代码下载中找到。如下所示的参考将告诉你正在讨论的工程的示例代码在哪个目录下可以找到。参见附录A中关于下载和安装示例工程的说明。
Web参考  你可以在sample路径下找到这个工程的代码。
由于是逐步地进行指导,因此前面的章节中出现的内容非常详细。在后面的章节里,我们假定你对一些基本的Kylix任务已相当熟悉,就不再仔细重复每个步骤,这样,我们能够迅速跳到问题的核心。
从哪里入手
有些书的写作目的是作为参考手册,你可以迅速查询你所感兴趣的特定主题。有些书则叙述性很强,需要一页一页地顺序读下去。这本书是以上两种作用的综合。我们特别希望本书能够更有魅力,能够吸引你愿意从头至尾地读完每一章。同时,我们还将这本书的内容组织进行了结构化,这样你就可以在短时间内迅速找到你所关心的特定信息。
我们还意识到,对于读者而言,并不会对每一章都有兴趣。例如,如果你已经是一个熟练的Delphi开发人员,那么你可能不需要读第1章和第2章的细节内容。我们在每一章的简介中指出了所包含的主题,而你可以根据自己的经验水平,决定是否可以快速浏览某些主题。
我们想说的是,在写这本书的过程中,我们度过了美好的时光。Kylix是令人惊奇的,我们认为你也会像我们这样,在使用它的过程中发现乐趣。

作者简介

(美)Cary Jensen, Loy Anderson:暂无简介

译者简介

辰卓工作室:暂无简介

译者序

2001年1月31日,Borland公司正式发布了Kylix,它是世界上第一种运行在Linux平台上的完整的RAD(快速应用程序开发)工具,其重要意义不亚于Borland推出的世界上第一个IDE(集成开发环境)—Turbo Pascal。正是以极为出色的Pascal编译器为基础的Delphi为Borland在全球赢得了众多开发者的支持,并成为Win32平台最主要的开发工具之一。Kylix是Delphi在Linux平台上的具体实现,它将极大地提高Linux平台上GUI应用程序(尤其是商业和企业的数据库应用)的开发效率,数以万计的技术熟练的Win32开发人员将能够轻松转向Linux,难以计数的Win32商业应用将可能被移植到Linux平台上,Linux在服务器市场取得重要份额之后,将向桌面计算市场发起新的凌厉攻势。
Kylix,这个名称来自于古希腊的一种器皿,是Borland公司一项庞大计划的代码名称,这项计划的主要目的就是将Win32平台上的Delphi和C++Builder完整地移植到Linux平台上,现在该项目已经取得重大成果—Kylix的正式发布。
Aberdeen集团研究主任BillClaybrook说:“Linux要成为主流操作系统,需要专业的应用程序。Linux开发者需要在一个简单化、标准化的环境中以更快的速度构建这些应用程序,Kylix是惟一满足这种需要的开发工具。它建立在现有技术基础上,保持了与Windows同样的开发模式,从而大大地推动了Linux走入市场的进程。”
本书正是一本介绍如何使用Kylix进行应用程序设计的优秀书籍。在翻译本书的过程中,我们发现本书在结构安排上和内容的易理解性方面上都具有很大的优势。本书结构清晰,读者可以由浅入深地逐步进入Kylix世界。本书既可以作为一本教材来通读,亦可以作为一本参考书,在你进行Kylix开发遇到问题时,可以通过参阅本书的内容来寻求解决的方法。书中对当前流行的很多技术都有详细的讲解,比如数据库开发技术以及Web开发技术,而且代码详尽,例图丰富。相信通过对本书的学习,你将很快掌握Kylix的使用。
在术语的使用方面,我们参考了国内现有的Kylix及Delphi方面的书籍,力求避免混淆。
本书由胡季红、邓谆谆、姜玉琴、白建军组织翻译,参与翻译的有王玉峰、张江涛、刘志华和易会战。辰卓工作室全体人员参加了本书的翻译、校对、录入和排版工作。全书最后由肖国尊统稿。由于Kylix发布的时间较短,而且限于经验和水平,书中难免会存在一些不足和错误之处。敬请广大读者批评指正。

译  者
2001年9月20日

图书目录

译者序
前言
第一部分  Kylix应用程序开发
第1章  Kylix简介 1
1.1  Kylix概述 1
1.1.1  使用组件方式构建应用程序 2
1.1.2  Kylix执行代码生成 3
1.1.3  Kylix编程环境是事件驱动的 5
1.1.4  面向对象的软件开发 5
1.1.5  理解Kylix的开放工具API 5
1.1.6  快速应用程序开发 6
1.2  Delphi开发者眼中的Kylix 6
1.2.1  Kylix和Linux 7
1.2.2  CLX概述 8
1.2.3  一些缺陷 10
第2章  创建应用程序 13
2.1  创建一个基本的应用程序 13
2.1.1  创建一个新的工程 13
2.1.2  放置并配置组件 16
2.1.3  书写事件处理程序 18
2.1.4  添加菜单 20
2.1.5  使用附加的窗体和对话框 22
2.1.6  在命令提示符下运行完成的工程 30
2.2  Kylix工程中的文件 31
2.2.1  工程源文件 31
2.2.2  单元 31
2.2.3  窗体文件 32
2.2.4  被编译单元 33
2.2.5  可执行文件 33
2.2.6  被修改文件 33
2.2.7  工程选项文件 33
2.2.8  工程编译器设置文件 33
第3章  Kylix的RAD框架 34
3.1  使用可视窗体继承 34
3.1.1  改变继承对象的属性 37
3.1.2  在继承对象中覆盖事件处理程序 37
3.1.3  源于当前工程 39
3.1.4  定义共享的Object Repository 39
3.2  设计动作列表 39
3.3  使用帧 41
3.3.1  创建帧 42
3.3.2  使用帧 43
3.3.3  覆盖包含组件的属性 44
3.3.4  包含的对象事件处理程序 45
3.3.5  覆盖包含的对象的事件处理程序 47
3.3.6  帧和资源 48
3.3.7  简化帧的使用 49
3.3.8  将帧转化为实际的组件 51
3.4  使用数据模块 51
3.4.1  使用数据模块来共享组件 52
3.4.2  数据模块的局限性 53
第4章  使用并配置编辑器 55
4.1  编辑器键映射 55
4.2  选择编辑器按键 57
4.2.1  键宏记录 57
4.2.2  块缩进与不缩进 58
4.2.3  使用书签 59
4.2.4  将To-Do列表项作为书签来使用 59
4.2.5  类导航 60
4.2.6  代码浏览 60
4.2.7  类完成 62
4.2.8  递增查找 64
4.2.9  查找匹配分隔符 64
4.2.10  列操作 65
4.3  Code Insight 65
4.3.1  代码完成 65
4.3.2  代码参数 66
4.3.3  工具提示表达式求值 67
4.3.4  工具提示符号洞察 67
4.3.5  代码模板 67
4.4  编辑器键绑定 70
4.4.1  声明键绑定类 71
4.4.2  实现键绑定类 72
4.4.3  声明并实现Register过程 75
4.4.4  创建并安装新的设计时包 76
第5章  调试Kylix应用程序 78
5.1  集成调试器 78
5.1.1  工具提示表达式求值 78
5.1.2  调试窗口 79
5.1.3  Run菜单 84
5.2  禁用调试器 84
5.2.1  指示调试器忽略引发的异常 86
5.2.2  指示Kylix忽略特定异常 86
5.3  断点概述 87
5.3.1  源断点 87
5.3.2  其他断点类型 91
5.3.3  在Kylix会话之间持续断点 93
第二部分  数据库应用程序
第6章  数据库应用程序 95
6.1  理解数据库 96
6.1.1  数据库与表 96
6.1.2  数据库与SQL 97
6.1.3  其他与数据库相关的概念 97
6.1.4  本书中使用的数据库 98
6.1.5  创建数据库与表 98
6.2  利用Kylix开发数据库概述 99
6.3  数据库应用程序中使用的组件 106
6.3.1  数据识别控件 106
6.3.2  数据访问组件 108
6.3.3  dbExpress组件 109
6.4  dbExpress概述 110
6.5  创建简单的数据库应用程序 116
第7章  使用数据识别控件 120
7.1  数据识别控件的常规配置 120
7.1.1  Tab顺序与可视控件 121
7.1.2  修改Tab顺序 122
7.2  配置Kylix的数据识别控件 123
7.2.1  准备一个启用数据的组件模板 123
7.2.2  使用DBGrid 124
7.2.3  使用DBNavigator 142
7.2.4  使用DBText 143
7.2.5  控制DBEdit 144
7.2.6  使用DBMemo 146
7.2.7  使用DBListBox 147
7.2.8  使用DBComboBox 149
7.2.9  使用DBCheckBox 150
7.2.10  使用DBRadioGroup 150
7.2.11  使用DBLookupListBox与DBLookup
ComboBox 151
第8章  使用TField 154
8.1  字段概述 154
8.2  理解永久性字段 159
8.2.1  创建永久性字段 160
8.2.2  配置永久性字段 160
8.3  在程序运行时使用字段 167
8.3.1  读写数据集的字段 167
8.3.2  编写OnValidate事件处理程序 171
8.3.3  字段的访问、性能与维护问题 172
8.4  创建新的永久性字段 175
8.4.1  创建计算字段 176
8.4.2  创建查找字段 177
8.4.3  定义合计字段 178
第9章  使用单向数据集 182
9.1  单向数据集 182
9.2  使用单向数据集 183
9.2.1  定义SQL连接 183
9.2.2  返回记录集的单向数据集 184
9.2.3  不返回结果集的单向数据集 186
9.3  使用参数化查询 187
9.3.1  创建主细视图 189
9.3.2  通过链接查询创建主细视图 192
9.3.3  准备单向查询 193
9.4  执行存储过程 194
9.4.1  返回各个值的存储过程 195
9.4.2  返回数据集的存储过程 196
第10章  使用内存数据集 199
10.1  内存数据集 199
10.2  创建内存表与索引 200
10.3  保存数据与取消修改 206
10.4  按索引排序 207
10.5  使用范围 212
10.6  过滤 214
10.6.1  根据属性进行过滤 214
10.6.2  过滤器选项 216
10.6.3  使用OnFilterRecord事件处理
      程序 216
10.6.4  使用过滤器进行导航 217
10.7  搜索数据 218
10.7.1  使用FindKey与FindNearest 218
10.7.2  使用GotoKey与GotoNearest 219
10.7.3  使用Locate与Lookup 219
10.8  记录级别的有效性检查 224
第11章  高级数据库技术 226
11.1  应用更新的艺术 226
11.1.1  利用内存数据集编辑数据 226
11.1.2  基于记录状态进行过滤 230
11.1.3  判定记录状态 233
11.1.4  从Change日志中删除修改 234
11.1.5  刷新记录 237
11.2  自定义更新过程 238
11.2.1  通过DataSetProvider属性控制更新 239
11.2.2  向更新过程添加代码 242
11.2.3  处理更新错误 246
11.3  实用技术 248
11.3.1  使用SQL监视器 248
11.3.2  克隆游标 249
11.3.3  以每次保存一条记录的方式保存
数据 249
第12章  编写dbExpress驱动程序 253
12.1  理解数据库提供商客户端 253
12.1.1  初始化环境 254
12.1.2  连接数据库服务器 254
12.1.3  初始化语句句柄 254
12.1.4  准备SQL语句 255
12.1.5  传递运行时参数 255
12.1.6  执行SQL语句 256
12.1.7  绑定记录缓冲区 256
12.1.8  读取记录 257
12.1.9  释放句柄并且断开连接 257
12.2  dbExpress核心实现 258
12.2.1  SQLDriver类 258
12.2.2  SQLConnection类 261
12.2.3  SQLCommand类 267
12.2.4  SQLCursor类 286
12.2.5  SQLMetaData类 292
12.3  dbExpress接口源文件 292
第三部分  Kylix先进特性精选
第13章  多线程应用程序 293
13.1  多线程的优点 295
13.2  创建多线程应用程序 296
13.3  线程同步 307
13.3.1  使用Synchronize 307
13.3.2  使用临界区 308
13.3.3  等待线程 310
13.3.4  使用事件对象 313
13.3.5  锁对象 315
13.4  其他线程技术 315
13.4.1  线程局部变量 315
13.4.2  调试线程 316
13.4.3  对数据库的多线程访问 317
第14章  共享对象库 319
14.1  共享对象库概述 319
14.2  创建一个共享对象库的例子 320
14.2.1  将函数书写到Export 321
14.2.2  控制共享对象库名称 323
14.3  加载共享对象库存例程 326
14.4  创建共享对象库导入单元 328
14.5  动态加载共享对象库 330
14.5.1  声明变量 331
14.5.2  动态加载共享对象库 332
14.5.3  获取函数或者过程的地址 332
14.5.4  释放共享对象库 332
14.6  调试共享对象库 335
14.6.1  使用宿主应用程序进行调试 335
14.6.2  使用工程组进行调试 336
14.7  共享对象库初始化及退出 337
14.7.1  定义初始化代码 337
14.7.2  定义退出过程 337
第15章  构建组件 338
15.1  对象概述 338
15.1.1  从记录转向类 338
15.1.2  封装与成员可见性 341
15.1.3  定义运行时接口 342
15.1.4  继承与多态 345
15.2  组件创建简介 347
15.3  一个简单组件示例:定义新的属性
缺省值 348
15.3.1  使用Component向导 349
15.3.2  覆盖方法 350
15.3.3  实现覆盖构造函数 351
15.3.4  测试新的组件 352
15.3.5  安装组件 354
15.4  创建设计时包 355
15.5  有关属性的一个例子 357
15.5.1  定义成员域 357
15.5.2  定义属性 358
15.5.3  定义方法 358
15.5.4  覆盖现有方法 359
15.5.5  实现覆盖方法 360
15.5.6  创建事件属性 361
15.5.7  在完成组件时需要注意的细节
问题 362
15.6  相关主题:提高属性可见性 369
第16章  使用接口 372
16.1  接口概述 373
16.2  为何使用接口 373
16.3  声明接口 375
16.4  实现接口 377
16.5  接口和方法解析 384
16.6  通过授权实现接口 384
16.7  接口实例:数据泵 387
第四部分  Internet应用程序开发
第17章  Internet技术概述 393
17.1  协议、技术与专业术语 393
17.2  RFC 394
17.3  IP地址 394
17.3.1  域名 394
17.3.2  TCP/IP与UDP 395
17.3.3  套接字与端口 395
17.3.4  SGML 396
17.3.5  HTML 396
17.3.6  FTP 397
17.3.7  HTTP 397
17.3.8  MIME 397
17.3.9  万维网 397
17.3.10  Web服务器 398
17.3.11  Web浏览器 398
17.3.12  Apache 398
17.3.13  CGI与DSO 399
17.3.14  SSI 399
17.4  Web服务器扩展概述 400
17.5  Web交互简介 400
17.5.1  URL的组成 401
17.5.2  请求类型 403
17.6  使用HTML 403
17.7  使用HTML将数据提交给Web服务器
扩展 404
17.7.1  图片标记 405
17.7.2  锚标记 405
17.7.3  HTML表单 406
17.8  编译Apache服务器来使用DSO 411
第18章  使用Web Broker编写Web服务器
扩展 414
18.1  创建简单的CGI Web服务器扩展 414
18.2  安装、使用CGI服务器 418
18.2.1  添加LD_LIBRARY_PATH环境
变量 418
18.2.2  将CGI应用程序写到ScriptAlias
目录中 420
18.2.3  从浏览器执行CGI应用程序 421
18.3  创建、配置一个简单的Apache DSO 422
18.3.1  创建DSO工程 422
18.3.2  使用生成器 423
18.4  安装、使用DSO库 427
18.4.1  将DSO库写到Apache目录中 427
18.4.2  将DSO添加到httpd.conf中 427
18.4.3  关闭和启动Apache 428
18.4.4  从一个浏览器执行DSO库 429
第19章  高级Web Broker主题 431
19.1  从HTML表单中获取数据 431
19.2  创建基于Web的数据库应用程序 435
19.2.1  Web服务器扩展与并发性 435
19.2.2  数据识别提供者 436
19.2.3  在TableProducer中格式化单元 440
19.3  Cookie与WebRequest对象 441
19.3.1  获取和设置cookie 442
19.3.2  使用cookie和重定向 443
19.4  WebRequest的内容 446
19.5  调试Web服务器扩展 449
19.5.1  将CGI工程转换成DSO工程 449
19.5.2  调试DSO工程 450
第20章  Internet Direct概述 453
20.1  什么是Internet Direct 453
20.2  Internet Direct组件 455
20.2.1  Indy客户端组件 455
20.2.2  Indy服务器组件 457
20.2.3  Indy Miscellaneous组件 459
20.2.4  下载更新的Internet Direct组件 461
20.3  使用Internet Direct组件 461
20.3.1  Internet Direct客户端是如何
工作的 461
20.3.2  使用TIdAntiFreeze 462
20.3.3  Internet Direct服务器的工作方式 463
20.3.4  使用线程管理器 464
20.4  Internet Direct许可证 464
20.4.1  Indy修改的BSD许可证 464
20.4.2  Indy MPL许可证 465
20.4.3  在Kylix应用程序中遵守Indy
许可证 465
20.5  技术支持 465
第21章  使用Internet Direct 467
21.1  客户端和服务器的创建顺序 467
21.2  一个简单的服务器示例 468
21.2.1  线程和IdTCPServer 470
21.2.2  阻塞调用与并发 470
21.2.3  OnExecute和异常 471
21.3  数据库服务器示例 472
21.3.1  创建数据库服务器 472
21.3.2  创建数据库客户 474
21.4  在客户端处理异常 476
21.4.1  从客户端检测连接中断 476
21.4.2  使用多线程客户端测试服务器 477
21.5  使用TIdSMTP发送邮件 480
21.5.1  创建消息 480
21.5.2  创建TIdSMTP客户 481
21.5.3  在线程中创建客户端 482
21.5.4  初始化客户端线程 484
21.5.5  从一个线程中更新用户界面 484
21.6  ZIP编码查找服务器和客户端 486
21.6.1  定义ZIP编码协议 486
21.6.2  ZIP编码服务器 487
21.6.3  ZIP编码客户端 489
21.7  创建一个控制台服务器 491
21.7.1  创建控制台服务器的例子 491
21.7.2  测试纯文本控制台服务器 493
附   录
附录A  安装示例代码 495
附录B  本书的Web支持站点 496

教学资源推荐
作者: 汪同庆 关焕梅 汤洁
作者: (美)Harvey M.Deitel,Paul J.Deitel
作者: (美)布莱恩·R. 霍尔(Brian R.Hall) 凯文·J.斯隆卡(Kevin J.Slonka)著
参考读物推荐
作者: (美)Colin Walls 著
作者: (美)Terry Winograd
作者: Leigh Edwards; Richard Barker 等
作者: 丁如敏 王琳 等著