Comment copier un winsock dans un groupe de winsock?

Résolu
retaks666 Messages postés 286 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 16 juillet 2007 - 12 juil. 2004 à 21:17
cs_liquide Messages postés 1016 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 24 juin 2008 - 13 juil. 2004 à 02:58
voila, j'ai créer un chat, avec un groupe de winsock, et j'aimerai que lorque l'un d'eux se connecte, les index soi déplacés, qu'il n'y ai jamais d'index vide. j'ai essayer ça mais ça marche pas:
If Winsock1.Count > 2 Then ' si il y a qu'une personne connectée, on vas pas lui envoyer le message quand elle se déconecte ;)
Unload Winsock1(index)
Text1.Text = Text1.Text & vbCrLf & "unload"
Load Winsock1(index)
Text1.Text = Text1.Text & vbCrLf & "load"
For i = index To (Winsock1.Count - 1) 'décale lors d'une connexion
Unload Winsock1(i)
Text1.Text = Text1.Text & vbCrLf & "unload"
Load Winsock1(i)
Text1.Text = Text1.Text & vbCrLf & "load"
Winsock1(i) = Winsock1(i + 1)
Text1.Text Text1.Text & vbCrLf & "winsock(" & i & ") winsock(" & i +1 1 & ")"
Next i
Winsock1(Winsock1.Count - 1).Close
Text1.Text = Text1.Text & vbCrLf & "fermeture du dernier winsock"
Unload Winsock1(Winsock1.Count - 1) 'enlève le dernier client
end if

quelqu'un a une solution ?

3 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
12 juil. 2004 à 22:45
Salut retaks666
J'ai été confronté à la même recherche et il n'est pas possible de savoir si un objet à été Unloadé ou pas.
Par contre, j'ai trouvé cette astuce :
Au lieu de Unloader un objet, je mets simplement le texte "Libre" dans sa propriété Tag.
Ensuite, quand je cherche un objet libre, je n'ai qu'à chercher avec la petite séquence :
Dim Trouvé As Boolean
For r = 1 To MonObjet.Count
   If MonObjet(r).Tag = "Libre" Then
      ' Objet est libre ...
      Trouvé = True
      MonObjet(r).Tag = ""   ' Annule le flag
      Exit For
   End If
Next r
If Not Trouvé Then
   ' S'il n'y en a pas, on en charge un nouveau
   Load MonObjet(MonObjet.Count + 1)
End If

Vala
Jack
3
retaks666 Messages postés 286 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 16 juillet 2007
13 juil. 2004 à 00:36
hum non c'est pas tellement savoir s'il a été déchargé que je veux, je veux juste décalé tous les éléments du groupe a partir d'un index, d'1, par exemple, dans un groupe de 5 winsock, le 3 ferme, alors le numero4 vas devenir 3, le 5 le 4, et le 5 se décharge... et je ne trouve pas comment faire.
0
cs_liquide Messages postés 1016 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 24 juin 2008
13 juil. 2004 à 02:58
Salut,
je ne saisis pas trop car si ils sont indéxés, ils ont le même code. En admettant qu'il y ai un select case
case 1
case 2
case 3
case 4
case 5
si le 5 est unloadé, le case 5 ne sera jamais appelé

en déchargeant juste le dernier, le code reste identique.

en supposant que le 4 devienne le 3, puisque le 4 a le même code que le 3, que le 4 devienne 3 ne changera rien, le code sera executé sur l'index.

bonne prog
liquide
0
Rejoignez-nous