Eliminar duplicados en ListBox

Hola, quiero eliminar entradas repetidas de un listbox con un pushbutton, no consigo hacerlo sin caer en un error. alguien me pue ayudar con el cdigo.
Gracias

Hola Carlos,

Sera de ayuda que publicaras el cdigo de lo que tienes ahora para ver lo que puede estar fallando. De lo contrario, es complicado… :-/

Javier

Ante todo disculpad por el ttulo porque no refleja el contenido. Ya he conseguido que no me d error, sin embargo, solo consigo borrar los valores repetidos por duplicado, si alguno est por triplicado solo me quita una ocurrencia. Y si vuelvo a ejecutar la accin del botn, ni se entera.

Aqu va el cdigo:

dim rowcount as integer
dim i as integer

rowcount = window1.listbox1.LastRowIndex

For i = rowcount - 1 downto 1

If Abs(Val(window1.listbox1.CellValueAt(i,0)) - Val(window1.listbox1.CellValueAt(i+1,0))) <= 0.1 Then
window1.listbox1.RemoveRowAt(i)
End If

Next

Pues creo que al final faltaba una tontera el lmite inferior de i tena que ser 0 en lugar de 1.
Y con eso parece funcionar bien. En todo caso si se os ocurre otra forma, bienvenida ser.
Gracias

Mientras los valores similares estn seguidos funciona bien, cuando estn separados, ya no s com hacerlo.

Hmmm… uno de mis métodos favoritos para hacer este tipo de “limpiezas” consiste en evitar que los duplicados lleguen al Listbox. Me explico: imagino que los datos que finalmente irán en el ListBox provienen de alguna fuente; pues bien, puedes crear un diccionario donde la clave sea el dato que necesites que sea único… antes de añadir dichos datos al ListBox.

Si la clave del diccionario aun no existe: la añades al diccionario y asignas el valor (si no necesitas asignar un valor en concreto siempre puedes pasar un Nil o lo que más te convenga). Si la clave del diccionario ya existe (algo que puedes comprobar fácilmente) entonces te limitas a asignar el valor o bien seguir iterando con el próximo elemento.

Una vez que el Diccionario ya tiene todos los datos sin duplicados (después de todo las claves del diccionario son únicas), pues iteras el diccionario y te limitas a añadir las claves al listado (junto con sus correspondientes valores en otra columna, si procede).

De este modo da igual si los datos fuente contienen dos o más repeticiones: la clave del diccionario te hará de filtro y, por tanto, tu ListBox no tendrá duplicados y evitarás usar otros algoritmos que impliquen múltiples pasadas de comprobación.

¿El problema? Que esto te sirve así “tal cual” siempre y cuando no tengas que guardar diferentes valores para una misma clave… que también se puede hacer, claro!

No sé si me he explicado bien… ¡si necesitas más detalle sólo tienes que decirme!

(Por cierto, te he cambiado el título del hilo para que guarde más relación con el contenido del mismo; espero que no te parezca mal!)

Gracias Javier voy a estudiar esta opcin

Los datos provienen de un array:
dim data(-1) as double, ¿cómo hago para asociar sus valores a un diccionario? Perdona la pregunta, tal vez muy obvia, pero no estoy familiarizado con los diccionarios.

something like this: (untested…)

[code]dim dict as new dictionary
for x as integer = 0 to data.ubound
if dict.haskey (data(x)) then
//do nothing
else
dict.value(data(x)) = “Used”
listbox1.addrow data(x)

end if

next[/code]

hola carlos. te recomiendo utilizar la etiqueta “code” para publicar tus lineas de cdigo en el foro. de esta forma es mucho ms legible para los que deseamos ayudarte. el botn de cdigo es el sptimo contando de izquierda a derecha

Y, si el tema es diferente, abra una nueva conversacin.