Tema: try except
Ver Mensaje Individual
  #7  
Antiguo 12-07-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Reputación: 24
seoane Va por buen camino
Antes de nada, para poner código en el foro usa las etiquetas. Es decir:

[delphi]
// Aqui el codigo
[/delphi]

Y queda así de bonito :
Código Delphi [-]
Componentes:= ComponentCount-1;
for i:=0 to Componentes  do
begin
  try
    if (Components[i] is TPanel) then
      RemoveComponent(Components[i]) ;
  except
  end;
end;
Segundo, el error te da porque estas recorriendo la lista al revés. Cuando recorres una lista para eliminar elementos, tienes que hacerlo desde el final hasta el principio. De lo contrario cuando eliminas un elemento, los que vienen a continuación cambian su índice y eso provoca que te "saltes" elementos y, lo que es peor, que al llegar al final hagas referencia a elementos que no existen y de ahí el fallo. Es decir deberías hacerlo así:
Código Delphi [-]
Componentes:= ComponentCount-1;
for i:= Componentes  downto 0 do
begin
  if (Components[i] is TPanel) then
      RemoveComponent(Components[i]) ;
end;
Responder Con Cita