TList

TList包含对象指针列表。

类关系 TObject

Tlist用于存储和维护对象列表。TList引入属隆和方法以执行以下操作:

(1)在列表中增加或删除对象。

(2)在列表中重排对象。

(3)在列表中定位和获得对象。

(4)在列表中对对象进行排序。

属性列表

Capacity 标识TList对象维护的指针数组的大小。

Count 表明在列表中使用的项的数量。

Items 列出对象的引用。

List 标识组成Items的指针数组。

方法列表

~TList 删除与TList对象有关的内存。

Add 在列表的末尾插入有关的内存。

Clear 从列表中删除所有项。

Delete 删除Index参数标识的项。

Error 产生EListError异常。

Exchange 交换Items数组中两项的位置。

Expand 增加列表的Capacity。

First 返回Items[0]。

IndexOf 返回Items数组中一指针的索引。

Insert 增加一对象至Items数组中。

Last 返回Items[Count-1]。

Move 在Items数组中改变某一项的位置。

Pack 从Items数组中删除所有的零项。

Remove 从Items数组中删除Items参数的第一个引用。

Sort 在列表中执行QuickSort。

TList 创建一个新的TList对象。

详细说明

属性

TList::Capacity

__property int Capacity = {read=FCapacity,write=SetCapacity,nodefault};

标识TList对象维护的指针数组的大小。

设置Capacity为列表将要包含的指旬数。当当设置Capacity属性时,如果没有足够的内存扩展列表为它的新的大小,将产生EOutOfMemory异常。

在没有重新分配内存情况下,读取Capacity可得到列表能包含的对象数。注意不要混淆Capacity和Count属性;Count属性为列表中使用的项的数量。Capacity值总是大于或等于Count值。当Capacity大于Count,通过设定Capacity至Count可以回收未使用的内存。当添加一对象至列表,而此列表已被填充到Capacity时,Capacity属性自动增加。在增加对象之前设置Capacity能减少内存重分配的数量,因此提高了执行效果。例如:

List->Clear();

List->Capacity = Count;

for(int i=0;i<Count;i++) List->add(...);

在for循环之前分配Capacity保证在随后的每一Add操作不重新分配列表。在调用Add时避免重新分配可以提高执行效果并且保证Add操作不产生异常。

TList:;Count

__property int Count = {read=FCount,write=SetCount,nodefault};

表明在列表中使用的项的数量。

读取Count可以确定Items数组中项的数量。增加Count的大小将在Items数组的末尾增加必要的零指针的数量;减小Count的大小将从Items数组的末尾删除必要的零指针的数量。

注意:Count并不总等同于列表中引用的对象的数量。在Items数组中,某些项将包含零指针。如果要删除零指针并且设置Count为对象引用的项数,则可以调用Pack方法。

时间: 2024-11-03 20:52:43

TList的相关文章

Delphi 2009泛型容器单元(Generics.Collections)[1]: TList

Delphi 2009 新增了泛型容器单元: Generics.Collections, 同时还有一个 Generics.Defaults 单元做支持. Generics.Collections 包含了以下实用类: TList<T> TQueue<T> TStack<T> TDictionary<TKey,TValue> TObjectList<T> TObjectQueue<T> TObjectStack<T> TObj

让TList类型安全

在VCL中包含有一个TList类,相信很多朋友都使用过,它可以方便的维护对象指针,所以很多朋友都喜欢用它 来实现控件数组.不幸的是,这个TList类有一些问题,其中最重要就是缺乏类型安全的支持. 这篇文章介绍如何从TList派生一个新类来实现类型安全,并且能自动删除对象指针的方法. TList的问题所在 对于TList的方便性这里就不多说,我们来看一下,它到底存在什么问题,在Classes.hpp文件中,我们可以看到函数的原型是这样申明的: int __fastcall Add(void * I

为何我加入数据到TList之后读取出来是乱码,代码如下

问题描述 为何我加入数据到TList之后读取出来是乱码,代码如下 unit Unit1; interface uses Windows Messages SysUtils Variants Classes Graphics Controls Forms Dialogs StdCtrls; Type PL=^TL; TL=record str:string[20]; End; type TForm1 = class(TForm) Button_OpenFile: TButton; Memo_Tex

一个面试题引发的血案

  今天去奥博的天(objectival)面试遇到了这样的 一道的机试题       题干大致如下:              有关税率的问题: 一般的商品要交的消费税,单除了 医药,书籍,食品之外 不交税,他的税率是10%, 还有的就是 进口税 ,进口税 税率是5%,  .              测试用例通过xml来存放数据,             要求 本面试题完全使用了面向对象的方式来实现. 来计算商品的税收,并且商品税收是进行舍入0.05的操作,如13.14舍入是13.15, 60

超级强大的vim配置(vimplus)

From : http://www.cnblogs.com/highway-9/p/5984285.html From : http://www.cnblogs.com/ma6174/archive/2011/12/10/2283393.html From : http://www.cnblogs.com/youxia/p/linux002.html From : http://blog.csdn.net/namecyf/article/details/7787479 最近在重新配置Vim,也在

求个泛型排序写法,如下。

问题描述 求个泛型排序写法,如下. public static List<T> SortAsc<T>(List<T> source, string sortby) { List<T> tlist = source.OrderBy(x => x.GetType().GetProperty(sortby)).ToList<T>(); return tlist; } 这个方法我写的,测试根本没排序,求大神指点迷津 解决方案 List<T&g

C++Builder中实现控件数组的功能

Borland C++ Builder作为Inprise(原Borland)公司新推出的快速应用程序开发工具(RAD),具有威力强大的C++语言和快捷便利的可视化编程完美结合的优点,遗憾的是其没有直接提供像VB中的控件数组的功能,需要开发者自己编程实现. VB中的一个控件数组可以 允许多个控件共享同一个事件句柄 提供了运行期间增加一个控件的机制 提供了一种方便的组合控件的方法. 前两项在C++ Builder中早已实现,而且CB更有一个优点.即不同类型的控件可以使用相同的句柄(只需在相关控件的O

php的目录遍历及目录删除函数

小编今天没事写了目录想关的函数 包括 遍历该文件夹下的文件,目录子目录  读取当前文件下目录和文件  删除当前文件 夹下的目录子目录以及文件 以上三个函数目前还不支持中文文件 中文目录 <?php header("Content-type:text/html;charset=utf-8"); /** * 读取当前目录下的文件和目录 * * @param string $path 路径 * @return array 所有满足条件的文件 */ function tlist($pat

保护(IIS)web服务器的15个技巧

iis|web|web服务|web服务器|技巧 通常地,大多数Web站点的设计目标都是:以最易接受的方式,为访问者提供即时的信息访问.在过去的几年中,越来越多的黑客.病毒和蠕虫带来的安全问题严重影响了网站的可访问性,尽管Apache服务器也常常是攻击者的目标,然而微软的Internet信息服务(IIS) Web服务器才是真正意义上的众矢之的. 高级教育机构往往无法在构建充满活力.界面友好的网站还是构建高安全性的网站之间找到平衡点.另外,它们现在必须致力于提高网站安全性以面对缩减中的技术预算 (其