Chinaunix首页 | 论坛 | 博客
  • 博客访问: 14490329
  • 博文数量: 5645
  • 博客积分: 9880
  • 博客等级: 中将
  • 技术积分: 68081
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-28 13:35
文章分类

全部博文(5645)

文章存档

2008年(5645)

我的朋友

分类:

2008-04-28 20:47:19

下载本文示例代码
p> 作为Windows下可视化RAD工具的杰出代表,Delphi 的最新版本——BorlandDelphi4在Delphi3的基础上,又增加了许多新功能、新特性乃 至新语法、新单元——如动态数组、方法重载、默认参数等,从而为编程人员提供了更强劲、 更方便的开发工具和环境。其中,动态数组的引入更是一个让人盼望已久的变化。 一、动态数组(DynamicArrays)简介: 在传统Pascal语言或Delphi先前版本所使用的Object Pascal语言中,数组指的是一组类型相同、带下标的又序的变量,是预先分配好的一块固 定大小的存储单元,其语法如下: type $#@60;数组类型名$#@62;=array[下标1..下标2]of$#@60;基类型$#@62;; var $#@60;数组变量名$#@62;:$#@60;数组类型名$#@62;; 或 var $#@60;数组变量名$#@62;:array[下标1..下标2]of$#@60;基类型$#@62; 由传统数组的定义可知:传统数组的范围大小取 决于在使用它之前即已定义下的下标1和下标2这两个值。数组变量的下标决不能超出这个 范围。因此,传统数组是一种静态的数据结构,它无法在程序运行中动态地改变其容纳能力, 应用范围无疑也受到了很大的局限性。 Borland公司(现在的Inprise公司)对这种“静态” 的数组的改造工作一直在进行着,先后引入了String、PChar两个字符串大类来解决字符数 组的问题——消灭了程序中笨拙的array[N1..N2]ofchar和packedarray[N1..N2]of char语句。这一次,终于在BorlandDelphi4中将数组正式划分为静态数组(StaticArrays) 和动态数组(DynamicArrays)两大类,以求通过后者来解决传统数组的痼疾。 动态数组的语法很简单: var $#@60;数组变量名$#@62;:=arrayof$#@60;基类型$#@62; . . . 下面就以一个实际例子来说明一下动态数组的应 用和使用方法。 二、使用动态数组实现“模糊查询”实例 在一些数据库中,往往需要根据标题或文件名中 的某个关键字(或词)来实现“模糊查询”,如有一个文件资料库,现要求查出所有文件名中 包含“简报”两个字的文件,那么用FindKey()、GotoKey()等“精确制导”的方式自然不行,而Set ge 和Filter语句在关键字(或词)出现在字符串首部时倒能一用,对于出现在中间或末尾时的 情况却无能为力。显然,单纯依靠检索函数或过程来一次性完成这类查询工作是不行的。 通过对问题的观察可知,“模糊查询”所操作的对 象是字符串(String或PChar),给出的关键字(或词)是可能出现在各字符串中的子串,要确 定在字符串中是否包含给出的子串,Delphi提供了两个函数:Pos(sub_s:String,s:String) 适用于String类型和StrPos(sub_p:PChar,p:PChar)——适用于PChar类型,若在目标 串中含有给出的子串,则返回值为子串所在位置,否则为0。因此,要实现记录的“模糊查询”, 只需将关键字(或词)作为子串,将数据库中对应的字段内容作为主串,然后做Pos或StrPos 运算即可。 但比较后的结果放在哪呢?由于数据库的记录个 数通常是变化着的,而每次查询的结果又未必相同,因此,势必要求以一个动态的数据结构 来存储查询结果。若使用指针型记录,则不但存储时较麻烦,而且查看检索结果也复杂得很。 引入动态数组后就显得轻松多了,只需对数据库进行一次遍历,就实现各种要求了。 具体操作说明如下: 1、操作对象: ...... 2、查询要求:输入一个关键字(或词),要求在“AREA” 字段中查找,将包含有该关键字(或词)的所在记录找出并返回结果(记录数),通过导航条 来显示命中记录。 3、Form及主要构件属性的设定: ...... 4、编写各事件: ...... 5、运行结果: 在编辑框中输入任意字符或字符串,然后单击“开 始查找”按钮,程序查找完毕后将在编辑框下显示命中记录的条数,通过单击“开始查找”按 钮下的导航条可显示具体的命中记录。[见图示]例)输入“美洲”,单击“开始查找”。显示查 找结果为“符合要求的有3条记录”。单击导航条四个按钮,可进行命中记录向上、向下的逐 条显示,并会自动提示是否已显示完毕。 本例所介绍的方法亦适用于其他类型和语言的数 据库。 总之,Delphi4中的动态数组在处理一些变化的、 类型较简单的数据时,是指针类型的良好代替者。若使用得当,将会给编程带来格外的方便。 p> 作为Windows下可视化RAD工具的杰出代表,Delphi 的最新版本——BorlandDelphi4在Delphi3的基础上,又增加了许多新功能、新特性乃 至新语法、新单元——如动态数组、方法重载、默认参数等,从而为编程人员提供了更强劲、 更方便的开发工具和环境。其中,动态数组的引入更是一个让人盼望已久的变化。 一、动态数组(DynamicArrays)简介: 在传统Pascal语言或Delphi先前版本所使用的Object Pascal语言中,数组指的是一组类型相同、带下标的又序的变量,是预先分配好的一块固 定大小的存储单元,其语法如下: type $#@60;数组类型名$#@62;=array[下标1..下标2]of$#@60;基类型$#@62;; var $#@60;数组变量名$#@62;:$#@60;数组类型名$#@62;; 或 var $#@60;数组变量名$#@62;:array[下标1..下标2]of$#@60;基类型$#@62; 由传统数组的定义可知:传统数组的范围大小取 决于在使用它之前即已定义下的下标1和下标2这两个值。数组变量的下标决不能超出这个 范围。因此,传统数组是一种静态的数据结构,它无法在程序运行中动态地改变其容纳能力, 应用范围无疑也受到了很大的局限性。 Borland公司(现在的Inprise公司)对这种“静态” 的数组的改造工作一直在进行着,先后引入了String、PChar两个字符串大类来解决字符数 组的问题——消灭了程序中笨拙的array[N1..N2]ofchar和packedarray[N1..N2]of char语句。这一次,终于在BorlandDelphi4中将数组正式划分为静态数组(StaticArrays) 和动态数组(DynamicArrays)两大类,以求通过后者来解决传统数组的痼疾。 动态数组的语法很简单: var $#@60;数组变量名$#@62;:=arrayof$#@60;基类型$#@62; . . . 下面就以一个实际例子来说明一下动态数组的应 用和使用方法。 二、使用动态数组实现“模糊查询”实例 在一些数据库中,往往需要根据标题或文件名中 的某个关键字(或词)来实现“模糊查询”,如有一个文件资料库,现要求查出所有文件名中 包含“简报”两个字的文件,那么用FindKey()、GotoKey()等“精确制导”的方式自然不行,而Set ge 和Filter语句在关键字(或词)出现在字符串首部时倒能一用,对于出现在中间或末尾时的 情况却无能为力。显然,单纯依靠检索函数或过程来一次性完成这类查询工作是不行的。 通过对问题的观察可知,“模糊查询”所操作的对 象是字符串(String或PChar),给出的关键字(或词)是可能出现在各字符串中的子串,要确 定在字符串中是否包含给出的子串,Delphi提供了两个函数:Pos(sub_s:String,s:String) 适用于String类型和StrPos(sub_p:PChar,p:PChar)——适用于PChar类型,若在目标 串中含有给出的子串,则返回值为子串所在位置,否则为0。因此,要实现记录的“模糊查询”, 只需将关键字(或词)作为子串,将数据库中对应的字段内容作为主串,然后做Pos或StrPos 运算即可。 但比较后的结果放在哪呢?由于数据库的记录个 数通常是变化着的,而每次查询的结果又未必相同,因此,势必要求以一个动态的数据结构 来存储查询结果。若使用指针型记录,则不但存储时较麻烦,而且查看检索结果也复杂得很。 引入动态数组后就显得轻松多了,只需对数据库进行一次遍历,就实现各种要求了。 具体操作说明如下: 1、操作对象: ...... 2、查询要求:输入一个关键字(或词),要求在“AREA” 字段中查找,将包含有该关键字(或词)的所在记录找出并返回结果(记录数),通过导航条 来显示命中记录。 3、Form及主要构件属性的设定: ...... 4、编写各事件: ...... 5、运行结果: 在编辑框中输入任意字符或字符串,然后单击“开 始查找”按钮,程序查找完毕后将在编辑框下显示命中记录的条数,通过单击“开始查找”按 钮下的导航条可显示具体的命中记录。[见图示]例)输入“美洲”,单击“开始查找”。显示查 找结果为“符合要求的有3条记录”。单击导航条四个按钮,可进行命中记录向上、向下的逐 条显示,并会自动提示是否已显示完毕。 本例所介绍的方法亦适用于其他类型和语言的数 据库。 总之,Delphi4中的动态数组在处理一些变化的、 类型较简单的数据时,是指针类型的良好代替者。若使用得当,将会给编程带来格外的方便。 下载本文示例代码


从 实 例 看 Delphi 4 中 的 动 态从 实 例 看 Delphi 4 中 的 动 态从 实 例 看 Delphi 4 中 的 动 态从 实 例 看 Delphi 4 中 的 动 态从 实 例 看 Delphi 4 中 的 动 态从 实 例 看 Delphi 4 中 的 动 态从 实 例 看 Delphi 4 中 的 动 态从 实 例 看 Delphi 4 中 的 动 态从 实 例 看 Delphi 4 中 的 动 态从 实 例 看 Delphi 4 中 的 动 态从 实 例 看 Delphi 4 中 的 动 态从 实 例 看 Delphi 4 中 的 动 态从 实 例 看 Delphi 4 中 的 动 态从 实 例 看 Delphi 4 中 的 动 态从 实 例 看 Delphi 4 中 的 动 态
阅读(112) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~