Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-12-2008
Avatar de JoAnCa
JoAnCa JoAnCa is offline
Miembro
 
Registrado: jul 2005
Ubicación: Cuba
Posts: 435
Poder: 19
JoAnCa Va por buen camino
Cool Ayuda para hacer un algoritmo de busqueda y comparacion

Hola a todos
Necesito ayuda para elaborar un algoritmo que me permita buscar un elemento de una lista en otra lista.

Es decir

Lista 1 ---- Lista 2
1 ------------ a
2 ------------ b
3 ------------ c

Comparar 1 con cada elemento a, b y c para saber si son iguales
Comparar 2 y 3 de la misma forma

Para explicarme mejor:

Tengo una BD con todos los Discos duros de la PC, y hago un nuevo chequeo de hardware donde obtengo la lista de discos duros existentes en ese momento en la PC
El objetivo es comparar si son los mismos que estan en la BD o si hubo cambios con alguno de ellos (es decir, si cambiaron uno por otro, o quitaron, o agregaron alguno).
El cambio lo detecto por el numero de serie que es unico para cada disco duro

Tal vez el metodo que trato de implementar no sea el correcto, pero agradeceria cualquier ayuda para poder hacer lo que quiero
__________________
La hora de acción no es hora de aprender, es necesario haber aprendido antes

Última edición por JoAnCa fecha: 18-12-2008 a las 20:55:30.
Responder Con Cita
  #2  
Antiguo 18-12-2008
Rockin Rockin is offline
Miembro
 
Registrado: may 2003
Ubicación: Málaga
Posts: 264
Poder: 22
Rockin Va por buen camino
pues dependiendo el componente que uses, se me ocurre algo asi:
Código Delphi [-]
for i:= 1 to num_elementos_lista1 do
begin
    
      for j:= 1 to num_elementos_lista2 do
      begin
             
              IF elemento_lista1[i] = elemento_lista2[j] then
              begin
                    //hacemos lo que queramos si son iguales los elementos
              end;

      end;
end;

Es una idea, no se como es la lista, si es una tabla, un Tlist, o lo que sea.

Saludos
Responder Con Cita
  #3  
Antiguo 19-12-2008
Avatar de JoAnCa
JoAnCa JoAnCa is offline
Miembro
 
Registrado: jul 2005
Ubicación: Cuba
Posts: 435
Poder: 19
JoAnCa Va por buen camino
Cool

Hola Rockin

Vale la idea que me das, las listas una es una tabla y la otra un stringlist, ya habia probado algo parecido pero el problema esta en que cuando comparo, siempre me da diferente.
Pues me compara el Elemento 1 con cada uno de la otra lista, y entonces cuando compara con el 1 da Verdadero y con los siguientes me da falso
Y al final no se como hacer para saber si el disco 1 cambio




Gracias
__________________
La hora de acción no es hora de aprender, es necesario haber aprendido antes

Última edición por JoAnCa fecha: 19-12-2008 a las 22:30:10.
Responder Con Cita
  #4  
Antiguo 20-12-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
la tabla, cárgalo en otro stringlist si quieres:
Código Delphi [-]
// lista1 la base de datos
// lista2 el stringlist con los discos duros
for i:= 0 lista1.count-1 do
begin
   if lista2.indexOf(lista1[i]) = -1 then
      showmessage('ups no existe ' + lista1[i] + ' en lista2');
end;

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 20-12-2008
Avatar de JoAnCa
JoAnCa JoAnCa is offline
Miembro
 
Registrado: jul 2005
Ubicación: Cuba
Posts: 435
Poder: 19
JoAnCa Va por buen camino
Cool

Muy bueno tu codigo Lepe, de esa forma es mas facil saber si un elemento de una lista existe en la otra.

Entonces aplicando esa funcion, lo que pretendo hacer es:
- Buscar cada elemento de Lista1 en Lista2
- Lo almaceno en X si no existe
- Buscar cada elemento de Lista2 en Lista1
- Lo almaceno en Y si no existe
- Si X o Y contienen algo, entonces emito el mensaje de que hubo cambios y muestro los valores de X y de Y

Este algoritmo estara correcto asi?
Si tienen otra forma mejor o mas optima, digamenlo tambien para implementarlo, o si con este algoritmo ya estaria bien.
__________________
La hora de acción no es hora de aprender, es necesario haber aprendido antes
Responder Con Cita
  #6  
Antiguo 20-12-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Puedes usar otra lista ¿no?
Código Delphi [-]
// lista1 la base de datos
// lista2 el stringlist con los discos duros
noExiste = TStringlist.Create;
for i:= 0 lista1.count-1 do
begin
   if lista2.indexOf(lista1[i]) = -1 then
      noExiste.Add(Lista1[i])
end;
if noExiste.Count > 0 then
   ShowMessage(' Se han eliminado los siguientes discos ' + #13#10 + noExiste.CommaText);

Cuando te mostrará los discos duros que han sido reemplazados.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
Respuesta



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
Algoritmo para comparacion de cadenas danilo_candales Varios 8 17-11-2007 17:23:14
Ayuda para hacer una busqueda radije MySQL 0 30-04-2007 10:19:22
Algoritmo de búsqueda fonética Alexander Varios 2 13-10-2004 00:47:32
Buena codigo para hacer una busqueda edwin1 OOP 2 12-09-2003 20:35:00
hacer una comparacion con null oesteve Conexión con bases de datos 1 18-06-2003 15:08:34


La franja horaria es GMT +2. Ahora son las 13:49:43.


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