开发者社区


C++/C | Java | .Net/Windows | Linux/Unix | 开源 | 其他
首页 - 编程
编程
全文搜索:   

了解Delphi 6 container
作者: ZDNET CHINA 特稿
2002-03-01 14:38:30



Container(容器)是按一种有效方式存储大量items的地方,它通常包括一系列或一套items。Container为items的存储方式赋予了特殊含义。本文的例子包括结构列表、顺序列表、堆栈和队列。

这些container可能不是最常见的,但是如果你知道在哪儿找到它们、如何使用它们的话,那么对于你来讲会非常方便。

TList

在查找Delphi中特定的container类之前,首先先看一下TList,TList在Delphi版本1中就已经有了。它能提供存储指针的list,你可以直接把新的items加入到list中,这一点会给你带来很大的方便,而且,由于list只存储指针,所以你不必担心items本身占用内存空间问题(否则,你必须考虑到这一点)。当你释放或破坏list时,你释放的仅仅是存储指针的空间。

但是,TList只能存储指针这一点也是一个问题,除非你提前知道,否则你将无法获知存储的是什么。当你存储所有同类型items(象records)时,并不存在这样的问题,但是,同理,如果存储对象类型不同象TEdits, TButtons, 和Tlabels,就会给你带来许多不便。原因是你要的仅仅是想返回指针。所以就不能使用Run-Time Type Information (RTTI)来获取存储的真正类型。基于这一点,引入了TObjectList。

为了分析和比较Delphi 6中不同container的用途,我在这里用TEdit, TMemo, 和7个 TButton components编了一个小的demo。见图A,每个button都能够说明特定collection或container类的特点。同时,这个程序也能够下载

图A

不同container的功能显示demo

下面的一小段程序是从源程序中摘下来的,它可以生成TList并把items加进去。

TForm1.btnListClick(Sender: TObject)
Var
i: Integer;
List: TList;
Begin
List := TList.Create;
Try
List.Clear;
for i:=0 to Pred(ComponentCount) do
List.Add(Components[i]);
// Usage of List...
finally
List.Free
End
end;

另外还是要注意,因为TList并不支持RTTI,所以如果事先不知道items类型的话,你将无所适从。

【下一页】
声明:
Builder.com.cn(原ZDNet China应用开发频道)原创文章版权所有,未经许可严禁转载,且不构成投资建议。
近期相关报道:
实用技术文档
J2me XML
C/C++ C#
Java Oracle
Mysql .Net
VB.NET CSS
SQL Server 数据库
SQL UNIX
Linux Jsp
PHP Perl
Javascript IIS
XHTML ColdFusion
ASP/ASP.NET Apache
AJAX
订阅技术邮件
订阅"技术圈"杂志!请在下面选择您感兴趣的专题,填写e-mail地址,然后按订阅按钮:
应用开发管理
VS.NET 周刊
Database 周刊
WEB Service周刊
JAVA 周刊
IT 认证
Windows服务器周刊
互联网开发
当Windows Server 2008专家得5000元现金大奖
CNET NETWORKS 中国: 爱卡汽车网 | CNET科技资讯网 | e询网 | CWEEK | 蜂鸟网 | GameSpot China | 个人电脑 | PChome | SPN | 网友世界 | ZDNet China | 中关村在线
CNET NETWORKS 美国: BNET | CNET.com | CNET Download.com | CNET News.com | CNET Reviews | CNET Shopper.com | GameSpot | MP3.com | mySimon | Release 1.0 | Search.com | TechRepublic | TV.com | Webshots | ZDNet
Copyright (c) 2006 CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
ZDNet 公司标识是 CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号