PrivateでTStringListの配列を組んでいて、プログラム中から、配列の中のどれかのStringListを解放しています。
最終的にはOnDestroyで全て解放するのですが、このとき、すでに解放してあるものはFreeを呼び出さない。
つまり、解放されているものが識別できればいいのですが、解放されているか識別する方法ってありますか?
よろしくお願いします。
nil を代入していないかぎり識別する方法はありません。
StringList.Free;
と書かずに、
FreeAndNil(StringList);
とすると簡単に書けますよ。
解放してある場合の処理は、
if not Assigned(StringList) then
begin
{ 解放してある場合の処理 }
end;
と書きます。
配列じゃなくて TObjectList で保持すると、その辺は自動的にできますよ。
TObjectList.OwnsObjects をヘルプで見てください。
りおりお さん、にしの さん、どうもありがとうございます。
FreeAndNilなんていうのがあるなんて初めて知りました。nilが代入されるのなら識別もどうにかなります。
TObjectListというのも初めて聞きました(汗)。ちょびちょびとHelpを引きつつ使ってみようと思います。
どうもありがとうございました。
ツイート | ![]() |