Delphi中TList類應用

2022-01-13 14:41:56 字數 1876 閱讀 9884

在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;

vart_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

to52

dobegin

t_sub:=i div14;

t_spare:=i mod14;

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

downto0do

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物件。

Delphi中TList類應用

在delphi中指標最常見的就是和類tlist結合起來使用。下面是乙個很簡單的例子,希望對這個例子的分析能讓大家對使用tlist類有乙個簡單的認識。的功能是使用指標和tlist來生成乙個牌串,並將牌串儲存在t cardinfo中。procedure tform1.button1click sende...

學習 TList 類的實現 2

我原來以為 tlist 可能是乙個鍊錶,其實只是乙個陣列而已.你知道它包含著多大乙個陣列嗎?maxlistsize 個 maxlistsize 是 delphi 在 classes 單元定義的乙個常量 maxlistsize maxint div 16 也就是 134217727 這也是 tlist...

學習 TList 類的實現 6

實現 tmylist.add 函式.tlist 中的 add 函式用到了乙個 grow 方法,它的原理是元素越多就為以後準備更多記憶體,我們這裡省略為預留 4 個元素的記憶體 tlist 中的 add 函式還同時觸動了乙個 notify 方法,這應該是為它們的子類準備的 估計是用它來激發乙個事件的 ...