这可能是一个愚蠢的问题,但我的大脑已经够累了,我想我要使用我的“生命线”之一,看看能否从我的stack overflow朋友那里得到帮助。 ;)
我需要删除主窗体上特定组件类型的所有实例(其中一些位于面板或选项卡中,但全部在同一窗体上并由其拥有)。这是我现在拥有的:
for i := 0 to frmMain.ComponentCount - 1 do
begin
if frmMain.Components[i] is TMyClass then frmMain.Components[i].Destroy;
end;
问题在于(我在编译之前就知道会出现这个问题)一旦我销毁了该组件,表单的组件列表将重新索引,导致数组越界。
有什么最好的方法来解决这个问题?我考虑过将“找到”的组件添加到一个单独的数组中,然后在此循环之后遍历该数组以删除它们,我认为这样会起作用...但是这是最好的方法吗?
先谢谢了
更新:
你们太棒了。谢谢:)
frmMain.ComponentCount-1
放入一个变量中。 - Fabricio Araujo