解放されたか知るには

解決


Delphi初心者  2004-12-08 11:04:19  No: 12183

PrivateでTStringListの配列を組んでいて、プログラム中から、配列の中のどれかのStringListを解放しています。
最終的にはOnDestroyで全て解放するのですが、このとき、すでに解放してあるものはFreeを呼び出さない。
つまり、解放されているものが識別できればいいのですが、解放されているか識別する方法ってありますか?
よろしくお願いします。


りおりお  2004-12-08 12:50:04  No: 12184

nil を代入していないかぎり識別する方法はありません。


にしの  2004-12-08 18:32:41  No: 12185

StringList.Free;
と書かずに、
FreeAndNil(StringList);
とすると簡単に書けますよ。
解放してある場合の処理は、
if not Assigned(StringList) then
begin
  { 解放してある場合の処理 }
end;
と書きます。


りおりお  2004-12-08 19:36:37  No: 12186

配列じゃなくて TObjectList で保持すると、その辺は自動的にできますよ。
TObjectList.OwnsObjects をヘルプで見てください。


Delphi初心者  2004-12-09 08:37:39  No: 12187

りおりお さん、にしの さん、どうもありがとうございます。

FreeAndNilなんていうのがあるなんて初めて知りました。nilが代入されるのなら識別もどうにかなります。
TObjectListというのも初めて聞きました(汗)。ちょびちょびとHelpを引きつつ使ってみようと思います。

どうもありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加