DELPHI中使用Tlist类的简单分析(补充)

简介:
上次我写了一篇关于如何使用Tlist的文章( DELPHI中使用Tlist类的简单分析 )。可是不少朋友反映,看了以后还是不能熟练的使用Tlist。今天我就以一个实际的例子讲述如何正确的使用Tlist类。
我的这个例子是:
有一个链表UserList,这个链表中保存的是用户的信息。在另一个链表CardList,中保存的是用户的牌信息。其中CardList中牌的信息是会随着用户出牌的要求而变化的。但是UserList中的用户信息是不变的。
 
首先,我们来定义两个结构
//用户信息结构
RuserInfo= record
       UserID:String[20];
       Sex:Boolean;
       Face:Byte;
       Score:Integer;
End;
PuserInfo = ^ RuserInfo;
 
//用户牌对应结构
RuserCardInfo = record
       UserInfo: PuserInfo;
       CardInfo:String[20];
End;
PuserCardInfo = ^ RuserCardInfo;
 
下来我们定义两个链表
UserListCardListTlist;
 
当用户加入这个桌子的时候写入UserList
Procedure UserInfoFun(UserID:String;Sex:Boolean;Face:Byte;Score:Integer);
Var
p_User:PuserInfo;
begin
New(p_User);
p_User.UserID:= UserID;
p_User.Sex:= Sex;
p_User.Face:= Face;
p_User.Score:= Score;
UserList.Add(p_User);
……
End;
当给用户发牌的时候
Procedure UserCardInfoFunUserIDString;
Var
       p_Card: PuserCardInfo
p_User:PuserInfo;
I,Count:Integer;
Flag:Boolean;
Begin
       //首先从用户链表中找出此用户的信息
Count:= UserList.Count;
       Flag:=false;
       For I:=0 to Count-1 do
       Begin
              p_User:= UserList.Item[I];
If UserID = UserID then
Begin
       Flag:=true;
Break;
End;
       End;
       //新生成一个用户牌信息指针,并加入到牌信息链表中
       If Flag then
       Begin
              New(p_Card);
              p_Card. CardInfo:=’H1H2H3H4’;
              p_Card. UserInfo^:= p_User^;
              CardList.Add(p_Card);
       End;
End;
 
当要从链表中删除用户出牌信息时
Procedure DelUserCardInfoFun(UserID:String);
Var
       p_Card: PuserCardInfo;
I,Count:Integer;
Begin
       Count:= CardList.Count;
       For I:=0 to Count-1 do
       Begin
              p_Card:= CardList.Item[I];
              If p_Card. UserInfo.UserID = UserID then
              Begin
                     CardList.Delete(I);
                     DisPose(p_Card);
                     Exit;
              End;
       End;
End;
 
需要注意的是,我在加入牌信息的时候使用了p_Card. UserInfo^:= p_User^;方法。这个方法是将p_User的内容直接复制给p_Card. UserInfo。也就是说,现在有两份用户信息。所以在后面删除用户牌信息的时候,我直接使用了DisPose函数来销毁。
 
其实上面的例子是一个很简单的例子,我想用它作为以前我写的文章的一个补充。希望能对大家使用Tlist有个帮助。
本文转自狗窝博客51CTO博客,原文链接http://blog.51cto.com/fxh7622/36071如需转载请自行联系原作者

fxh7622
 
相关文章
|
7月前
|
Java
【Java每日一题】— —第二十一题:编程把现实生活的手机事物映射成一个标准类Phone,并定义一个测试类PhoneDemo测试Phone类的功能
【Java每日一题】— —第二十一题:编程把现实生活的手机事物映射成一个标准类Phone,并定义一个测试类PhoneDemo测试Phone类的功能
|
7月前
|
C++
C++:类的补充知识
C++:类的补充知识
42 0
|
数据库 Python
【100天精通python】Day13:面向对象编程_多态和封装,实战模拟电影院的自动售票机选票页面
【100天精通python】Day13:面向对象编程_多态和封装,实战模拟电影院的自动售票机选票页面
295 0
理解 Delphi 的类(一) - 从结构/记录谈起
理解 Delphi 的类(一) - 从结构/记录谈起
131 0
理解 Delphi 的类(一) - 从结构/记录谈起
|
缓存 Windows
Windows程序设计——WNDCLASS结构参数及其用法
Windows程序设计——WNDCLASS结构参数及其用法
398 0
|
设计模式
Java---设计模块(设计模块的简介及最简单的俩个单例代码加测试)
Java---设计模块(设计模块的简介及最简单的俩个单例代码加测试)
114 0
【自然框架】 页面里的父类—— (补充)
没想到下午发的《【自然框架】 页面里的父类——把共用的东东都交给父类,让子类专注于其他。 》启发了热烈讨论,还以为又是一大堆的口水回复呢。看到大家的热烈讨论我很高兴,这才是我希望的讨论环境,无论是支持的还是反对的,我都非常感谢。
978 0