您的位置:首页 > 编程语言 > Delphi

DELPHI中使用Tlist类的补充学习

2008-11-28 12:15 363 查看
今天我就以一个实际的例子讲述如何正确的使用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; 
  
下来我们定义两个链表 
UserList,CardList:Tlist; 
  
当用户加入这个桌子的时候写入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 UserCardInfoFun(UserID:String); 
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); [Page]
       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有个帮助。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐