![]() |
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 |
pues dependiendo el componente que uses, se me ocurre algo asi:
Es una idea, no se como es la lista, si es una tabla, un Tlist, o lo que sea. Saludos |
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 tabla, cárgalo en otro stringlist si quieres:
Saludos |
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? :rolleyes: Si tienen otra forma mejor o mas optima, digamenlo tambien para implementarlo, o si con este algoritmo ya estaria bien. |
Puedes usar otra lista ¿no?
Cuando te mostrará los discos duros que han sido reemplazados. Saludos |
El objetivo es cuando se va a revisar la PC (auditoria), al hacer clic en un boton obtiene los datos del hardware y los compara con los que estan previamente almacenados en la BD. Si hay cambios los muestra en un Treeview clasificados por categorias
|
Algoritmo para comparar dos listas de valores
Las listas pueden ser en tablas, listas, cualquier cosa, lo unico que hay que hacer es adecuar el código al caso que proceda.A saber, si es una lista aumentar en uno el contador y si es una tabla leer el siguiente registro. Importante: Las listas deben estar ordenadas por el mismo valor, que es el que se compara
Este procedimiento asegura un par de cosas. 1.- Se tratan todos los elementos. 2.- Se optimiza al máximo los accesos, ya que sólo se lee una vez cada elemento de las listas. Este procedimiento seguro que lo conocen aquellos que han trabajado con ficheros secuenciales, es decir, los mayores de 38/40 años, ya que se utilizaba a menudo en programas cobol con ficheros secuenciales. Yo los hacía con lápiz y papel, que en definitiva, es como mejor se aprende.De primero de informática de los años 70-80. CONCLUSIÓN: Si los elementos son iguales, se lee de las dos listas. Si son distintos, siempre se lee de la lista del elemento menor. Un pequeño juego de ensayo quizás ayude a comprenderlo Iteraciones 1 - 1 -> Iguales se leen las dos listas 2 - 3 -> menor el de la lista 1, el 2 no está en la lista 2, se lee de la lista 1. 4 - 3 -> menor el de la lista 2, el 3 no está en la lista 1. leo de la lista 2 4 - 5 -> menor el de la lista 1, el 4 no está en la lista 2, leo de la lista 1 5 - 5 -> iguales, el 5 está en las dos listas, se lee de las dos listas 6 - 6 -> iguales, el 6 está en las dos listas, se lee de las dos listas FIN Espero que os sea de ayuda Un saludo |
La franja horaria es GMT +2. Ahora son las 02:01:48. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi