转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> Delphi程序 >> 正文
从 实 例 看 Delphi 4 中 的 动 态         ★★★★

从 实 例 看 Delphi 4 中 的 动 态

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1101 更新时间:2009/4/23 18:24:21
 作为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中的动态数组在处理一些变化的、类型较简单的数据时,是指针类型的良好代替者。若使用得当,将会给编程带来格外的方便。


[VB.NET程序]从 Visual Basic 6.0 到 Visual Basic.NET 的转换  [Delphi程序]一 个 实 用 的Delphi 屏 幕 拷 贝 程 序 的 设
[Delphi程序]从 Form1.Caption = “Hello World”说起  [Web开发]从 ADO 迁移到 ADO.NET(一)转贴www.vckbase.com
[Web开发]从 ASP.NET 服务器控件插入客户端脚本  [ORACLE]从 Oracle 移植递归 SQL 到 DB2 UDB
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台