Comparar listbox

Estoy comparando dos listas, para saber si el contenido de una de ella es igual al de la otra, pero cuando no es así, osea quito de la primera lista un elemento, se compare y de esta manera llamar a un procedimiento y eliminarlo de la tabla, y cuando agrego un elemento se compare y se pueda guardar en la tabla, he logrado comparar las dos listas y saber cuando un elemento es igual pero no el resto.
1

1 Respuesta

87.925 pts. Desarrollador de sistemas, delphi, SQL Interbase, Oracle
A ver creo que no te entiendo muy bien, supongo que hay una lista que es la principal, de la cual deberás igualarla con la otra lista, si la otra lista no tiene algún item de la lista principal, entonces este item deberá insertarse en la otra lista, ¿correcto?... ¿Ahora si en la otra lista hay un item que no existe en la principal este item deberá eliminarse de la otra lista para que así al final las dos listas queden iguales... es si el asunto?
Si es así... pues no necesitas comparar nada... simplemente borra toda la lista secundaria y luego todos los item de la lista principal insertalos en la otra lista y así ya quedaran las dos iguales...
O explicame que pasan con los items de cada lista si existen o no existen en la otra lista.
Ok, Gracias en primer lugar, lo que quiero es que al guardar el contenido de esta lista automáticamente se realicen los cambios necesario, ¿cómo qué? Bueno yo listo una cantidad de materias, cuando voy a modificar esta lista, es decir quitar o agregar una materia, voy a un botón para guardar, entonces, el programa debe saber si se quito o agrego una materia, yo había hecho eso compare dos listas, para saber si existía y lo quito, se realice el cambio, si no existía y lo agrego también se realice el cambio, a la hora de guardar.
Esto lo estas haciendo en la base de datos... o solo de manera temporal mientras el sistema este abierto...
Porque si es base de datos, es decir si estas insertando, editando o eliminando directamente a una tabla no necesitas listas ni saber cual borras o cual pones... eso lo hace automáticamente el TQuery.
Haz de cuenta que tu borras o agregas o editas algún registro en este caso MATERIAS, cuando le haces un applyUpdates al TQuery este automáticamente solo grabara o borrar las que hayas hecho tu, sin que tu tengas que verificar cual insertaste o borraste o modificaste/... si me explico... ahora si no es así... dime exactamente lo que quieras hacer, no me digas todo el problema en si. Dime por ejemplo: Necesito recorrer un lista una por una..
Dime algo así, algo directo para poder ayudarte por pasos. Porque si me sueltas todo el rollo no te entiendo mucho. Ok
Ok mira te envío un pequeño código donde te va indicando con un showMessage los items de la lista1 que no existen en la lista2... a ver que si te sirve y luego me dices que más te hace falta. Ok.
procedure TForm1.Button1Click(Sender: TObject);
var l1, l2:integer;
encontro:boolean;
begin
for l1 :=0 to ListBox1.Items.Count-1 do
begin
encontro := false;
for l2 := 0 to ListBox2.Items.Count-1 do
begin
if ListBox1.Items[l1] = ListBox2.Items[l2] then
begin
encontro := true;
break;
end;
end;
if not encontro then
ShowMessage('No existe: '+ListBox1.Items[l1]);
end;
end;

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas