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