在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 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物件。
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 方法,這應該是為它們的子類準備的 估計是用它來激發乙個事件的 ...