Ver Mensaje Individual
  #4  
Antiguo 09-11-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola adeszeus.

Además de lo dicho por rgstuamigo, cosa muy cierta ya que Free verifica la existencia del objeto antes de liberarlo, tambíen es importante
el sentido en que se ejecute el ciclo for.
Si lo haces de este modo:
Código Delphi [-]
   for i:= 0 to ComponentCount -1 do
Corres el riesgo de obtener errores de índice o que no se liberen algunos componentes.
Ya que cuando el un componente es borrado, la posición que tenía es ocupada inmediatamente por el componente sucesor.
Supongamos Components[1] ( componente 'A') es liberado; el componente 'B' ocupa su lugar.
Cuando vaya a liberar Components[2] en realidad estará liberando el 'C'. Y así sucesivamente...


Lo correcto sería:
Código Delphi [-]
   for i:= ComponentCount - 1 downto 0 do

Saludos.

Edito: Veo que marcos fué más rápido en editar. ( la mala costumbre de no recargar la página... )

Última edición por ecfisa fecha: 09-11-2010 a las 22:58:57.
Responder Con Cita