これで、TObjectList インスタンスができました。その中のアイテムをループして、リストからいくつかのオブジェクトを削除したいとします。あなたはこれを行うことはできません:
for I := 0 to ObjectList.Count - 1 do
if TMyClass(ObjectList[I]).ShouldRemove then
ObjectList.Delete(I);
...最初のオブジェクトのインデックスカウンターを削除すると、私はすべて間違ってループが機能しなくなるためです。
だからここに私の解決策があります:
Again:
for I := 0 to ObjectList.Count - 1 do
if TMyClass(ObjectList[I]).ShouldRemove then
begin
ObjectList.Delete(I);
goto Again;
end;
これは、これまでに見つけた最良の解決策です。誰かがもっときちんとした解決策を持っているなら、私はそれを見たいです。