Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-08-2012
Avatar de danyfebrero
danyfebrero danyfebrero is offline
Miembro
NULL
 
Registrado: jul 2012
Posts: 38
Poder: 0
danyfebrero Va por buen camino
borrar los items de listbox1 que no existan en listbox2

Hola, me pudieran ayudar?
Tengo el ListBox1 con varios items que voy a borrar, pero no quiero que se me borren los que existan en el ListBox2.
Ej:
en el Listbox1 tengo:
a
b
c
d
e
en el ListBox2 tengo:
a
c
d

entonces se deberian borrar
b y e.
pero no logro hacerlo con bucles, ni con nada de lo que he probado.
saludos y gracias de antemano.
dany
Responder Con Cita
  #2  
Antiguo 09-08-2012
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.233
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Debes hacer un bucle que recorra la primera lista:

Código Delphi [-]
for j := 0 to (Listbox1.Items.Count - 1) do begin
   ...

Para cada item de la primera lista buscarlo en la segunda; Para ello usa en método IndexOf o Find de la segunda lista (en la ayuda tienes los parámetros):

Código Delphi [-]
  ListBox2.Items.IndexOf  ...

  ListBox2.Items.Find ...

Por ultimo, si lo encuentras, lo borras de la primera con el método Delete de Items.

Prueba y si te da error, ya dirás...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 09-08-2012
Avatar de danyfebrero
danyfebrero danyfebrero is offline
Miembro
NULL
 
Registrado: jul 2012
Posts: 38
Poder: 0
danyfebrero Va por buen camino
ok gracias, voy a probar. saludos
Responder Con Cita
  #4  
Antiguo 09-08-2012
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola, solo añadir que al borrar algunos items, tu ciclo debe comenzar desde ultimo.

Código Delphi [-]
 for i:=ListBox1.Count-1 downto 0  do
  begin
   if ListBox2.Items.IndexOf(ListBox1.Items[i])=-1 then
    ListBox1.Items.Delete(i);
  end;

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #5  
Antiguo 09-08-2012
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.233
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Caro Ver Mensaje
Código Delphi [-]
 for i:=ListBox1.Count-1 downto 0  do
  begin
   if ListBox2.Items.IndexOf(ListBox1.Items[i])=-1 then
    ListBox1.Items.Delete(i);
  end;
Yo que estaba intentando que lo hiciera él...
Ahora perdió la gracia...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #6  
Antiguo 10-08-2012
Avatar de danyfebrero
danyfebrero danyfebrero is offline
Miembro
NULL
 
Registrado: jul 2012
Posts: 38
Poder: 0
danyfebrero Va por buen camino
hola gracias por todo Caro y a ti también Neftali en especial porque querias que me superara.... por cierto por qué debe comenzar desde el final?. saludos y gracias
Responder Con Cita
  #7  
Antiguo 10-08-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por danyfebrero Ver Mensaje
hola gracias por todo Caro y a ti también Neftali en especial porque querias que me superara.... por cierto por qué debe comenzar desde el final?. saludos y gracias

Pruébalo desde el principio y verás el resultado , así se aprende
Responder Con Cita
  #8  
Antiguo 10-08-2012
Avatar de danyfebrero
danyfebrero danyfebrero is offline
Miembro
NULL
 
Registrado: jul 2012
Posts: 38
Poder: 0
danyfebrero Va por buen camino
disculpen, y si quisiera que se borraran del listbox1 los que se repiten en el listbox2, cómo haría?
gracias otra vez
Responder Con Cita
  #9  
Antiguo 10-08-2012
Avatar de danyfebrero
danyfebrero danyfebrero is offline
Miembro
NULL
 
Registrado: jul 2012
Posts: 38
Poder: 0
danyfebrero Va por buen camino
hola
casimiro graciasm pero sigo sin enterder, porque normal no hace nada o me da un error de desbordamiento....
jejeje
probe poniendo = o cero al codigo que me dio Cairo pero solo me borra un item sigo sin lograr que me borre los existentes en el listbox2
disculoenme, saludos y gracias
Responder Con Cita
  #10  
Antiguo 10-08-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
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
Cita:
Empezado por danyfebrero Ver Mensaje
disculpen, y si quisiera que se borraran del listbox1 los que se repiten en el listbox2, cómo haría?
gracias otra vez
Hola.

No me queda claro si deseas borrar del ListBox1 aquellos datos que existen mas de una vez en ListBox2, o si te refieres a aquellos datos de ListBox1 que existen en ListBox2.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #11  
Antiguo 10-08-2012
Avatar de danyfebrero
danyfebrero danyfebrero is offline
Miembro
NULL
 
Registrado: jul 2012
Posts: 38
Poder: 0
danyfebrero Va por buen camino
hola
me refiero a aquellos datos de ListBox1 que existen en ListBox2.
traté con este codigo pero si no me borra los item que estan repetido si hay dos Pedro solo me borra 1

Código Delphi [-]
for i:=ListBox2.Count-1 downto 0  do
  begin
    ListBox2.ItemIndex:=I;
    with ListBox1.Items do Delete (IndexOf(ListBox2.Items[ListBox2.ItemIndex]));
  end;

ufff es muy complicado programar, que sería sin ayuda????
saludos y muchas gracias
Responder Con Cita
  #12  
Antiguo 10-08-2012
Avatar de danyfebrero
danyfebrero danyfebrero is offline
Miembro
NULL
 
Registrado: jul 2012
Posts: 38
Poder: 0
danyfebrero Va por buen camino
hola
probé con este codigo y funcionó pero no sé si está del todo bien:

Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
var I,Y:integer;
begin

for i:=ListBox2.Count-1 downto 0  do
  for y:=ListBox1.Count-1 downto 0  do
    with ListBox1.Items do Delete (IndexOf(ListBox2.Items[i]));
end;

si me pudieran decir
gracias y saludos
Responder Con Cita
  #13  
Antiguo 10-08-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
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
Cita:
Empezado por danyfebrero Ver Mensaje
hola gracias por todo Caro y a ti también Neftali en especial porque querias que me superara.... por cierto por qué debe comenzar desde el final?. saludos y gracias
Hola.

El error sucede por que el for recorre ListBox1 desde 0 a ListBox1.Count-1, pero cuando un ítem es borrado ya no existen ListBox1.Count-1 ítems, si no menos. Por lo que en algún punto, ListBox1.Items[i] estará referenciando a una posición que ya no existe.


Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 10-08-2012 a las 05:54:55.
Responder Con Cita
  #14  
Antiguo 10-08-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
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
Cita:
me refiero a aquellos datos de ListBox1 que existen en ListBox2.
Hola.
Código Delphi [-]
 for i:=  ListBox1.Count-1 downto 0 do
   if ListBox2.Items.IndexOf(ListBox1.Items[i]) <> -1 then 
    ListBox1.Items.Delete(i);

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #15  
Antiguo 10-08-2012
Avatar de danyfebrero
danyfebrero danyfebrero is offline
Miembro
NULL
 
Registrado: jul 2012
Posts: 38
Poder: 0
danyfebrero Va por buen camino
gracias Ecfisa es usted muy amable me funcionó perfecto
saludos y gracias una vez más
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Borrar items a un ListBox eddg Varios 10 31-10-2007 18:16:22
ListBox1 DM2005 Varios 5 06-07-2006 07:35:48
como escribir datos a un ListBox1 gulder API de Windows 2 23-05-2005 22:03:01
Borrar items de un TreeView ibarrols OOP 12 06-06-2003 20:50:30
Pasar datos de un Adoquery a un ListBox1 danytorres Varios 6 09-05-2003 03:16:37


La franja horaria es GMT +2. Ahora son las 16:08:50.


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
Copyright 1996-2007 Club Delphi