如何销毁自定义组件数组

时间:2013-10-22 05:53:43

标签: delphi delphi-xe2

我有自定义组件“TCARD”的销毁过程。然后在运行时我创建一个数组

Cards: array[1..20] of TCards
然后我做了一些事...... 在程序结束时,我想销毁阵列中的所有TC。我该怎么做或者我必须一次这样做。

cards[1].destroy;
cards[2].destroy;
....
cards[20].destroy;

1 个答案:

答案 0 :(得分:6)

如果你使用TObjectList<T>,这将为你完成,你需要做的只是破坏列表。

Uses
  Generics.Collections,
...

// define your list
Cards: TObjectList<TCard>;

...

// create list
Cards := TObjectList<TCard>.Create;
try
 // Create and add your card objects
 ACard := TCard.Create;
 Cards.Add(ACard);
 // do something with Cards
 ...
 // destroy cards - this will automatically free the objects owned by the list
finally
 Cards.Free;
end;

作为额外的奖励,您可以制作自己的自定义对象并为其添加与卡相关的功能。

type
  TMyCardList = class(TObjectList<TCard>)
  public
   // add needed behaviours
   function FindHighestCardBySuit(ASuit : TSuit) : TCard;
   procedure Shuffle;
   // etc ...
  end;  

如果出于某种原因你不想使用TObjectList,你可以通过简单的循环释放对象:

procedure FreeCards(Cards : TCards);

var
  Card : TCard;

begin
 For Card in Cards do
  Card.Free;
end;
相关问题