Fonction de manipulation chaine en VB

solodevci Messages postés 2 Date d'inscription dimanche 11 septembre 2005 Statut Membre Dernière intervention 12 novembre 2005 - 10 nov. 2005 à 17:56
solodevci Messages postés 2 Date d'inscription dimanche 11 septembre 2005 Statut Membre Dernière intervention 12 novembre 2005 - 12 nov. 2005 à 20:17
Salut

ça fait vraiment longtemps que j'ai utiliser VB mais mon problème est que je suis entrain de realiser un programme utilisant Winsock. Mon serveur demande le mot de passe au client et le client répont par le mot passe, l'orsque le serveur envoie "psw" pour demander le mot de passe, à la réception sur client je reçois d'autres chaines precedement transmis du genre "Bienvenue sur serveur psw" ainsi donc je souhaiterai utiliser une fonction de manipulation de chaine qui nous permettrai de recuperer le psw de la reception. Merci.

Voici le code
rem code du client
Private Sub W_DataArrival(ByVal bytesTotal As Long)
Dim rx As String
Dim rxp As String
rxp = Mid$(rx, InStr(1, rx, "psw", vbTextCompare), Len(rx)) ' voici le BUG
W.GetData rx 'on met ce que l'on reçoit dans la varible Rx.text
txtChat.Text = txtChat.Text & vbCrLf & rx 'bon ça tout le monde comprend :) msg "Reception " & rx
MsgBox msg
If rxp = "psw" Then ' on vérifie si on nous demande le mot de passe
Beep
MsgBox "Envoie du mot de passe"
W.SendData login.psw.Text ' on répond par le mot de passe taper dans le login
End If
rx = ""
End Sub

rem code du serveur
If Mid$(Recus, 1, 6) = "User :" Then ' on vérifie si on reçu user:
client.Text = Mid$(Recus, 7, Len(Recus)) 'alors on identifie l'utilisateur
txtChat.Text = txtChat.Text & vbCrLf & "Un Utilisateur est connecté au serveur"
'on envoie un echo à l'utilisateur pour sa connexion au serveur
txtEnvoi.Text = "Utilisateur " & Mid$(Recus, 7, Len(Recus)) & "Connecté au serveur " & "depuis " & Time$
W.SendData txtEnvoi.Text
txtEnvoi.Text = ""
msg = "psw" ' voici le bug
txtEnvoi.Text = msg 'on définit la chaine qui demande le mot de passe du client
W.SendData txtEnvoi.Text 'on demande à l'utilisateur son mot de passe

txtEnvoi.Text = ""
End If

3 réponses

Paladin2107 Messages postés 154 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 5 septembre 2008 1
10 nov. 2005 à 18:21
Dim pwd As String
pwd = InputBox("Saisir mot de passe ?")
MsgBox pwd

Couscous
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
10 nov. 2005 à 18:23
Salut, pour la partie client, c'est normal que ça plante, d'après ce que tu dis, le instr te renvoie une valeur > 1 donc tu ne peux donner comme longueur de chaine à extraire la longueur totale de la chaine d'origine. Essaie ça :

rxp = Mid$(rx, InStr(1, rx, "psw", vbTextCompare))
ou
rxp = Right$(rx, InStr(1, rx, "psw", vbTextCompare))

les 2 syntaxes sont équivalentes.

Pour la partie serveur, je ne comprend pas le bug. Ou alors msg n'est pas déclaré comme string.


Moi j'aurais codé directement :


txtEnvoi.Text = "psw"

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0
solodevci Messages postés 2 Date d'inscription dimanche 11 septembre 2005 Statut Membre Dernière intervention 12 novembre 2005
12 nov. 2005 à 20:17
Merci pour votre aide. les deux solutions pourront m'aider beaucoups merci.
0
Rejoignez-nous