1. 程式人生 > >delphi中Tlist的使用。

delphi中Tlist的使用。

我在上面的BLOG中寫到了使用指標的方法。在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中儲存的是每個牌的指標。在Tlist中的儲存格式類似於下圖:
3:隨機從這個連結串列中取出4個指標,並將指標對應的牌資訊儲存在變數t_CardInfo。因為在將指標插入到t_List中的時候,我們使用了New函式來申請記憶體,所以當從連結串列中刪除這個指標的時候,一定要使用Dispose函式來釋放,否則會形成記憶體洩露。 4:將t_List中剩餘的指標釋放。 5:釋放物件t_List物件。 使用類Tlist在開發遊戲中有很重要的位置,使用方法大多如我上面所寫的這樣。