当前位置: 首页 > 图文教程 > 认证考试 > 计算机等级考试 > 计算机二级:DELPHI中使用Tlist类的学习

计算机等级考试
excel电子表格计算日期差工龄生日等
2009全国计算机等级考试新变化
计算机二级DELPHI技巧:DELPHI获取U盘盘符代码
计算机二级:DELPHI中指针和类TLIST结合
计算机二级:DELPHI中使用Tlist类的学习
计算机二级DELPHI技巧:DELPHI程序错误类型
计算机三级网络技术:网站被黑的10大原因
计算机二级DELPHI设置DBGridEh自动排序方法
计算机等级考试辅导:禁止MessageBox()弹出的对话框
计算机等级考试:Windows7Shell命令大汇总
把表空间从字典托管模式升级成本地托管模式
去掉系统快捷方式箭头的途径:修改注册表
计算机一级辅导:电脑连续死机是什么问题
C++编程:如何安全终止线程
做一个合格的软驱磁头清洁工
电脑光驱读盘差怎么办?
教你还原不小心被删除的文件资料
DELPHI辅导:打开与编辑数据表
delphi数据库引擎管理器
计算机二级C++辅导:回调函数用法

计算机等级考试 中的 计算机二级:DELPHI中使用Tlist类的学习


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-04   浏览: 107 ::
收藏到网摘: n/a

  今天我就以一个实际的例子讲述如何正确的使用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);
  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有个帮助。