我正在尝试删除 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;