zoukankan      html  css  js  c++  java
  • Delphi中TList类应用

    在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中保存的是每个牌的指针。
    3:随机从这个链表中取出4个指针,并将指针对应的牌信息保存在变量t_CardInfo。因为在将指针插入到t_List中的时候,我们使用了New函数来申请内存,所以当从链表中删除这个指针的时候,一定要使用Dispose函数来释放,否则会形成内存泄露。
    4:将t_List中剩余的指针释放。
    5:释放对象t_List对象。
     
     
  • 相关阅读:
    流的概念(转自本站progor)
    Centos7安装OpenLDAP
    python发送post请求
    小计安装部署滴滴开源kafkamanager工具
    VSCode集成Cmder控制台输入中文乱码
    在win10的pycharm使用wsl中的python进行开发
    《Python数据科学手册》学习笔记及书评
    VSCode小说插件ReadNovel根据内容查找页码
    《TensorFlow实战Google深度学习框架(第二版)》学习笔记及书评
    Cmder启动WSL中的Ubuntu出现复制粘贴异常
  • 原文地址:https://www.cnblogs.com/easypass/p/1600813.html
Copyright © 2011-2022 走看看