TList包含对象指针列表。
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对象。
procedure TForm1.Button1Click(Sender: TObject);
const//黑桃,红桃,方块,草花
CardType:array[0..3] of String = ('S','H','D','C');
const
//取出的牌数
CardNums = 4;
type
//保存牌的指针信息
RCardrecord = record
CardInfo:String[2];
end;
PCard = ^RCardrecord;
var
t_List:TList;
I:Integer;
t_Sub,t_Spare:Integer;
t_CardType,t_CardNum:String;
p_Card:PCard;
t_Random:Integer;
t_CardInfo:String[8];
Count:Integer;
begin
//定义一个链表
t_List:=TList.Create;
//使用循环将52张牌放入链表中
for I:=1 to 52 do
begin
t_Sub:=I div 14;
t_Spare:=I mod 14;
t_CardType:=CardType[t_Sub];
t_CardNum:=IntToHex(t_Spare,1);
New(p_Card);
p_Card.CardInfo:=t_CardType+t_CardNum;
t_List.Add(p_Card);
end;
//使用随机从52张牌中抽取4张牌,并保存在 t_CardInfo中
Randomize;
for I:=1 to CardNums do
begin
t_Random:=Random(t_List.Count);
p_Card:=t_List.Items[t_Random];
t_CardInfo:=t_CardInfo+p_Card^.CardInfo;
t_List.Delete(t_Random);
DisPose(p_Card);
end;
Canvas.TextOut(10,10,t_CardInfo);
//清空链表中的指针
Count:=t_List.Count;
for I:=Count-1 downto 0 do
begin
p_Card:=t_List.Items[I];
t_List.Delete(I);
DisPose(p_Card);
end;
//释放链表
t_List.Free;
end;