Recorrer Winsock

Iniciado por Stelio Kontos, 23 Marzo 2011, 15:15 PM

0 Miembros y 1 Visitante están viendo este tema.

Stelio Kontos

Estaba haciendo un bucle for recorriendo los items de un Listview para quitar los items correspondientes a conexiones cerradas, pero por algún motivo a veces se cerraban más de dos, entonces he hecho un bucle que recorre Winsock de lado a lado, pero no funciona:
Código (vb) [Seleccionar]
Dim i As Long

For i = 0 To Winsock1.UBound

If Winsock1(i).State = sckClosed Then
        ListView1.ListItems.Remove (i)
        Winsock1(i).Close
End If

Next

skyweb07

Claro que se tienen que borrar porque ese codigo lo que hace es borrar el Item (i) del Listview que supuestamente es el mismo que el del winsock, lo cual no es correcto, por lo que te aconsejo utilizar el valor .tag del item del listview para ponerle la id del socket y asi poder borrar el item correcto, luego comparas y si es ese el mismo del que esta desconectado lo borras sino, pues sigues ;)

Código (vb) [Seleccionar]
Dim i as long
For i = 0 to Winsock1.Ubound
If Winsock1(i).state = sckClosed then
   For z = 1 to Listview1.listItems.count
     If ListView1.ListItems.Item(z).tag = Winsock1(i).index then
        ListView1.ListItems.remove i
     end if
     doevents
   next z
end if


next i


y cuando añadas un item al Listview en el .tag del item le pones como valor el index del winsock

ListView1.add lalalala
ListView.tag = Index

Eso es todo, prueba y dime k tal ;)