Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #2  
Antiguo 09-12-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 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 Celta.

Estuve mirando tu código y lo identé para mayor legibilidad, aunque veo que Casimiro ya lo ha echo... ( gracias.)

Al liberar los objetos TImagen, tenés usar el ciclo en forma descendente, ya que cuando un objeto es
liberado la posición es ocupada por el sucesor y cuando la variable de control llegue al valor Count - 1
seguro que hay menos objetos que ese valor.

Te puse el código con algunas correcciones, el cual probé con otras imágenes en una prueba sencilla.
No verifiqué la validez de las evaluaciones del condicional if, pero si son correctas, este código no debería darte error:
Código Delphi [-]
  for i := ListaEne.Count -1 downto 0 do
  begin
    // suponiendo que 'ene' es de tipo TImage
    // y que las comprobaciones sean correctas...
    Ene := ListaEne.Items[i];
    a1 := (imgmisil.Left + imgmisil.Width);
    a2 := (ene.Left + ene.Width);
    c1 := (imgmisil.Top + imgmisil.Height);
    c2 := (ene.Top + ene.Height);
    if (((imgmisil.Left < ene.Left) and (a1 > ene.Left)) and
       ((imgmisil.Top < ene.Top) and (c1 > ene.Top))) or
       ((ene.Left < imgmisil.Left) and (a2 > imgmisil.Left)) and
       ((ene.Top < imgmisil.Top) and (c2 > imgmisil.Top))) or
       (((imgmisil.Left < ene.Left) and (a1 > ene.Left)) and
       ((ene.Top < imgmisil.Top) and (c2 > imgmisil.Top))) or
       (((ene.Left < imgmisil.Left) and (a2 > imgmisil.Left)) and
       ((imgmisil.Top < ene.Top) and (c1 > ene.Top))) then
    begin
      TImage(ListaEne.Items[i]).Free;
      ListaEne.Delete(i);
    end;
  end;

Ya que simplificando el ejemplo, sería:
Código Delphi [-]
   for i:= ListaEne.Count-1 downto 0 do
   begin
     Ene:= ListaEne.Items[i];
     if Ene.Name = 'Imagen1' then
     begin
       TImage(ListaEne.Items[i]).Free;
       ListaEne.Delete(i);
     end;
   end;

Un saludo.

Última edición por ecfisa fecha: 09-12-2010 a las 00:50:00.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Liberar memoria usb jarr-o Varios 2 13-08-2008 18:01:07
Liberar memoria vicvil Varios 13 30-10-2006 17:14:38
Liberar memoria Sick boy Varios 6 02-07-2005 10:11:29
Liberar Memoria JoseQ Varios 6 16-07-2004 18:49:21
Liberar Memoria susje Varios 3 31-07-2003 23:18:18


La franja horaria es GMT +2. Ahora son las 21:28:49.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi