Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Eliminar objeto en StringList (https://www.clubdelphi.com/foros/showthread.php?t=84556)

Stell DG 03-11-2013 03:37:22

Eliminar objeto en StringList
 
Bueno, tengo almacenados objetos en un StringList y quiero ir eliminando de uno en uno según lo que se pida, siempre quiero que se elimine el primero que está en el StringList pero no todos al mismo tiempo. Esto es lo que tengo para eliminar:

Código Delphi [-]
Timage(ListaImagenes.Objects[0]).Free;
   ListaImagenes.Delete(0);

según yo aquí siempre elimina el primero que hay en la lista
pero me sale el error de:

"List index out of bounds(0)"

no siempre es el cero a veces es otro número. Como soluciono esto?

ecfisa 03-11-2013 17:27:49

Hola Stell DG, bienvenido a Club Delphi :)

Como a todos los que se inician te invitamos a que leas nuestra guía de estilo.

Con respecto a tu consulta:
Cita:

Empezado por Stell DG (Mensaje 469245)
...
Tengo almacenados objetos en un StringList y quiero ir eliminando de uno en uno según lo que se pida, siempre quiero que se elimine el primero que está en el StringList
...

Código Delphi [-]
  if ListaImagenes.Count > 0 then // si existen elementos...
  begin
    ListaImagenes.Objects[0].Free;
    ListaImagenes.Delete(0);
  end;


Saludos :)

Stell DG 06-11-2013 02:31:40

gracias, pero mi problema persiste
 
Muchas gracias por contestarme, pero aun tengo un error y no he podido solucionarlo.
Te explico: Se crea un objeto1, al cabo de un tiempo se crea un objeto2 y sólo borra al objeto2 siendo que debería borrar al objeto1, y al 1 sólo lo ignora durante todo el programa y lo deja visible estorbando ahi jeje.
Tengo algo asi:

Código Delphi [-]
gente:= TImage.Create(self); //creo mis objetos
gente.Parent:=self;
gente.Transparent := true;
gente.left:=fila.value*60;
gente.Width :=50;
gente.Stretch:=true;
gente.Name:='gente_'+inttostr(g);
g:=g+1;

ListaImagenes := TStringList.Create(); //aqui creo la lista 
  ListaImagenes.Sorted := True;
  ListaImagenes.Duplicates:= dupError;
  ListaImagenes.AddObject(gente.name,gente); //guardo los objetos en la lista

y en otro botón por ejemplo quiero borrarlos pero conforme se fueron creando, primero borrar el objeto1, después el 2 y asi sucesivamente, para eso puse esto que me dijiste:
Código Delphi [-]
if ListaImagenes.Count > 0 then // si existen elementos...
  begin
    ListaImagenes.Objects[0].Free;
    ListaImagenes.Delete(0);

y segun yo asi debería borrar siempre el primero, pero no me queda bien. Espero me puedas orientar

De antemano gracias!

ecfisa 06-11-2013 13:28:18

1 Archivos Adjunto(s)
Hola Stell DG.

Revisa si este ejemplo te orienta. En lugar de imágenes almacena Edits y son borrados en el evento OnClick de un botón. Además usa dos TListBox, el primero para mostrar los elementos almacenados y el segundo para mostrar el órden en que son borrados los elementos almacenados en TStrings.


Saludos :)

Stell DG 06-11-2013 23:43:00

Muchas gracias!!!:)


La franja horaria es GMT +2. Ahora son las 04:01:21.

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