9

FileEventObjects := TObjectList.Create(True);1つ以上のオブジェクトを含むTObjectリスト( )があります。オブジェクトは、処理されるまでリストにとどまる必要があります。(オブジェクトリストは、アプリケーションの期間中存在します。)

処理されたオブジェクトをリストから削除する方法が完全にはわかりません。

私がそうすると、オブジェクトは「解放」されますか?FileEventObjects.Delete(i)

動作中のTObjectListsの便利な例へのリンクはありますか?

よろしく、ピーター。

4

2 に答える 2

14

コンストラクターに渡すTrueと(デフォルトでもそうです)、 、またはを使用するかどうかに関係なく、コレクションからオブジェクトを削除するとすぐに、リストはオブジェクトを解放します。TObjectListTrueDeleteRemoveClear

これとは別に、 とTObjectList同じように使用できますTList

于 2011-07-01T12:15:17.403 に答える
5

のように常に逆方向にループすることを忘れないでください

for i := Pred(objectlist.Count) downto 0 do
begin
  objectlist.items[i].process;
  objectlist.delete(i);
end;

アイテムの削除中に 0 から count -1 までループすると、アクセス違反が発生します

于 2011-07-01T22:49:17.840 に答える