Está en la página 1de 1

Como Listar las Diferencias Entre Dos ListBox

Cuando se quiere comprobar si dos ListBox contienen los mismos datos el mtodo clsico es hacer dos bucles anidados y comprobar si cada uno de los elementos de una de las ListBox est contenido tambin en la otra ListBox, lo cual es un resulta en un algoritmo muy poco eficiente. El mtodo que aqu se propone slo requiere un bucle para cada uno de los elementos de una de las ListBox, lo cual reduce considerablemente el nmero de pasos a ejecutar. Imaginemos que ambas ListBox contienen 100 elementos, con el mtodo clsico habra que ejecutar 10.000 pasos (100 x 100), mientras que con el mtodo aqu propuesto slo habra que ejecutar 100 pasos. El algoritmo bsico es el siguiente: Dim i As Integer List3.Clear For i = 0 To List1.ListCount - 1 List2.AddItem List1.List(i) If StrComp(List2.List(List2.NewIndex + 1), List1.List(i), 1) <> 0 Then List3.AddItem List1.List(i) End If List2.RemoveItem List2.NewIndex Next i En el cual se presupone que List1 es una de las ListBox de datos y List2 es la otra ListBox de datos, siendo List3 una ListBox en la que van a quedar relacionados aquellos elementos de List1 que no estn contenidos en List2. Tanto List1 como List2 deben tener su Propiedad Sorted igual a True. Para la ListBox List3 no es necesario, aunque para una mayor claridad en la presentacin de los datos quizs sea conveniente establecerla tambin como una lista ordenada. Este algoritmo no hace distinciones entre letras maysculas y minsculas. Para el tratamiento de las vocales acentuadas el usuario deber implementar su propia Funcin, aunque como orientacin puede utilizarse la siguiente: Public Function NoAcentos(ByVal Cadena As String) As String ' Devuelve el contenido de 'Cadena', pero sin acentos. Dim Patron As String, i As Integer Patron = "aeiouAEIOU" For i = 1 To 10 Cadena = Replace(Cadena, Mid(Patron, i, 1), Mid(Patron, i + 10, 1)) Next i NoAcentos = Cadena End Function Motsoft Enero de 2010

1 de 1

También podría gustarte