我在上面的BLOG中写到了使用指针的方法。在DELPHI中指针最常见的就是和类TLIST结合起来使用。下面是一个很简单的例子,希望对这个例子的分析能让大家对使用TLIST类有一个简单的认识。
代码的功能是使用指针和Tlist来生成一个牌串,并将牌串保存在t_CardInfo中。
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;
//清空链表中的指针
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;
分析:
1:我们首先创建一个Tlist类的对象t_List。
2:将52张牌按照相应的格式保存在这个t_List中。注意,这里t_List中保存的是每个牌的指针。在Tlist中的保存格式类似于下图:
3:随机从这个链表中取出4个指针,并将指针对应的牌信息保存在变量t_CardInfo。因为在将指针插入到t_List中的时候,我们使用了New函数来申请内存,所以当从链表中删除这个指针的时候,一定要使用Dispose函数来释放,否则会形成内存泄露。
4:将t_List中剩余的指针释放。
5:释放对象t_List对象。
使用类Tlist在开发游戏中有很重要的位置,使用方法大多如我上面所写的这样。
分享到:
相关推荐
delphi 开发工具Tlist类介绍有助于delphi程序员开发查找,方便快捷
这只是一个学习DEMO,不想要资源分,但没有免费的下拉选项,只好选最低的分了。
Delphi中使用List的Demo,适合初学者
delphi中对类的简易Demo,类的定义、类的创建,类的特性测试,类的对象接口的定义使用;
Day6 Delphi中TList用法 xe2
Delphi中frame的使用Delphi中frame的使用Delphi中frame的使用Delphi中frame的使用Delphi中frame的使用
Delphi中sql语句的使用总结 Delphi中sql语句的使用总结 Delphi中sql语句的使用总结
1、下载后分别解压CEF4...3、将cef_binary_101.0.18+g367b4a0+chromium-101.0.4951.67_windows32中的Release和Resources内的文件拷贝至CEF4Delphi-master下的bin文件夹下面 4、编译demo文件夹下文件即可使用demo了
在DELPHI中使用MyDAC连接MySQL数据库时中文显示乱码的解决方法。
Delphi中的泛型基础及简单应用
Delphi中最简单的多线程例子 Delphi中最简单的多线程例子
Delphi 中多线程类 TThread 中文帮助
TStringList 常用方法与属性。包含,读入字符串、置换分隔符、类似的哈希表操作法、避免重复值、排序与倒排序等
Delphi 中的 XMLDocument 类详解
Delphi 源代码分析.rar 1/8书籍 共8部分,整理详细书签方便阅读
Delphi中关于TApplication类的详解.txt Delphi中关于TApplication类的详解.txt
Delphi中使用Assigned 用法.mht
在VC中的DLL类导出以后完全是可以被delphi调用的. 源码中有详细介绍和说明文档.
Delphi中使用package的一些心得
Delphi中关于TChart的示例本来就少,上传的是一个关于Delphi中TChart的使用示例,相信对于初学者有帮助