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對象。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM