カスタム コンポーネント ' ' の破棄手順がありますTCARD
。次に、実行時に配列を作成します
Cards: array[1..20] of TCards
次に、いくつかのことを行います...そして手順の最後に、配列内のすべての TCard を破棄したいと思います。どうやってこれを行うのですか、それともそのように一度に1つずつ行う必要がありますか.
cards[1].destroy;
cards[2].destroy;
....
cards[20].destroy;
カスタム コンポーネント ' ' の破棄手順がありますTCARD
。次に、実行時に配列を作成します
Cards: array[1..20] of TCards
次に、いくつかのことを行います...そして手順の最後に、配列内のすべての TCard を破棄したいと思います。どうやってこれを行うのですか、それともそのように一度に1つずつ行う必要がありますか.
cards[1].destroy;
cards[2].destroy;
....
cards[20].destroy;
を使用する場合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;