GLScene コンテナー内のすべてのシーン オブジェクトを削除しようとしており、次のコード スニペットを使用して削除しようとしていますが、オブジェクトを解放しようとすると、不明な理由でクラッシュし、セグメンテーション エラーが発生します。
行ごとにデバッグしようとしたところ、どういうわけかコンテナ クラスにGlscene1.Objects[i]
「#2」クラス名を持つ不可解なクラスが含まれていることがわかりました。Free メソッドを呼び出さずにまったく同じコード スニペットを実行しようとしましたが、異常は発生せず、オブジェクトは削除されませんが、オブジェクト クラス名には一貫性があります。
for i := 0 to GLScene1.Objects.Count - 1 do
begin
if (not GLScene1.Objects[i].ClassNameIs('TGLCamera')) and
(not GLScene1.Objects[i].ClassNameIs('TGLLightSource')) and
(not GLScene1.Objects[i].ClassNameIs('TGLDummyCube')) and
(not GLScene1.Objects[i].ClassNameIs('TGLXYZGrid')) and
(not GLScene1.Objects[i].ClassNameIs('TGLSceneRootObject')) then
begin
// if GLScene1.Objects[i].Count > 0 then
// GLScene1.Objects[i].DeleteChildren;
GLScene1.Objects.Remove(GLScene1.Objects[i],false);
if GLScene1.Objects[i] <> nil then // I comment out these lines
GLScene1.Objects[i].free; // I comment out these lines
end;
end;