Quien me ayuda a mejorar este codigo?(Socket)

Iniciado por n3ts4mura1, 5 Agosto 2006, 06:21 AM

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

n3ts4mura1

Ayudenme con esto porfavor tengo lo siguiente:

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim datos As String
 
   Winsock1.GetData datos
   'num = Len(datos)
 
    Select Case Left(datos, 4)
        Case "Rojo"
                RichTextBox1.SelColor = &HFF& '=rojo
                RichTextBox1.SelText = (RichTextBox1.SelText + "Servidor Dice" + datos )
        Case "Azul"
                RichTextBox1.SelColor = vbBlue
                RichTextBox1.SelText = (RichTextBox1.SelText + "Servidor Dice" + datos + vbCrLf)
        Case "Verd"
                RichTextBox1.SelColor = vbGreen
                RichTextBox1.SelText = (RichTextBox1.SelText + "Servidor Dice" + datos )
       
        Case "Amar"
                RichTextBox1.SelColor = vbYellow
                RichTextBox1.SelText = (RichTextBox1.SelText + "Servidor Dice" + datos )
        Case "none"
                RichTextBox1.SelText = (RichTextBox1.SelText + "Servidor Dice" + datos )
        Case Else
                'RichTextBox1.SelColor = &HFF& '=rojo
                RichTextBox1.SelText = (RichTextBox1.SelText + "Servidor Dice" + datos )
    End Select

End Sub

de esta manera recibo los datos del otro lado y puedo cambiarles de color .
y de esta manera los envio.

Private Sub Command1_Click()
On Error Resume Next
Dim enviar As String
Dim color As String
   enviar = Text1.Text
   color = Combo1.Text
   Winsock1.SendData color + enviar
End Sub

Si se pueden dar cuenta envio el color junto con el texto pero.
en el comobo tengo esta lista.

Rojo
Azul
verd
Amar
none

si me paso al poner mas de 4 carcateres me falla por que al recibir lo tengo solo con 4 y al recibir el mensaje me sal esto.

servidor diceRojo hola como estas

y la idea es que no salga la palabra rojo nose si alguien me puede ayudar a mejorar este codigo porfavor.

elmaro

#1
cundo envies la cadena enviala asi

Winsock1.SendData color & "|" & enviar


y cuadno la recibes solo tenes que separr las dos cadenas,. con un simple Split()
en el DataArrival() pon esto

cadenas = Split(datos, "|") 'desglosa la cadena
color = cadenas(0) 'en esta variable almacena el color
texto = cadenas(1) 'en esta variable almacena el texto


yo diria que envies el color en hexadecimal, asi no tengras que usar condicion if o case y pones el color directamente al desglosar la cadena asi:

RichTextBox1.SelColor = color

entendes?
bueno espero te sirva.
avisa si tienes alguna duda


pd: sry no avia visto que postiaste
suerte



El MaRo!

n3ts4mura1

Osea quieres que lo reciba de esta manera.
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim datos As String
Dim color As String
Dim Dice As String
'Dim Pos As Integer
   Winsock1.GetData datos
    cadenas = Split(datos, "|") 'desglosa la cadena
    color = cadenas(0) 'en esta variable almacena el color
    Dice = cadenas(1) 'en esta variable almacena el texto
    RichTextBox1.SelColor = color
    RichTextBox1.SelText = (RichTextBox1.SelText + "Servidor Dice :" + Dice + vbCrLf)

End Sub

Y que lo envie de esta.


Private Sub Command1_Click()
On Error Resume Next
Dim enviar As String
Dim color As String
   enviar = Text1.Text
   RichTextBox1.SelText = RichTextBox1.SelText + "Servidor Dice= " + Text1.Text + vbCrLf
   'color = Combo1.Text
   Winsock1.SendData color & "|" & enviar
End Sub


no me funciona de esa manera =(
a y otra cosa nose si esto funcionara.

el color lo saco de aca. mira.

'esta en un boton que dice colores

Dim color As String
cdl.ShowColor
'RichTextBox1.SelColor = cdl.color
'RichTextBox1.Text = cdl.color
color = cdl.color


el cdl es el CommonDialog para los colores.

nose si eso es posible pero bueno eso hice y no funciona =(


 :huh: es para un chat..........  :huh:  man, ya te esplicaron como diferenciar los datos que llegan  y envias, fijate bien ;)
el tiempo pondrá a cada uno en su lugar

-POLACO-

Para No agarrar la palabra rojo haces como te dice ElMAro y si no haces asi :
Siempre y cuando la cadena que te envian con el color tenga "4Digitos" he
Declaras otra variable ejemplo :



Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim datos As String
  Dim SinColor as string'<--Nueva VAriable
   Winsock1.GetData datos
   'num = Len(datos)
  SinCOlor=Mid(datos,5)<--Aca le asignas del  5to caracter hasta el final de la cadena
    Select Case Left(datos, 4)
        Case "Rojo"
                RichTextBox1.SelColor = &HFF& '=rojo
                RichTextBox1.SelText = (RichTextBox1.SelText + "Servidor Dice" +  SinCOlor )
        Case "Azul"
                RichTextBox1.SelColor = vbBlue
                RichTextBox1.SelText = (RichTextBox1.SelText + "Servidor Dice" +  SinCOlor + vbCrLf)
        Case "Verd"
                RichTextBox1.SelColor = vbGreen
                RichTextBox1.SelText = (RichTextBox1.SelText + "Servidor Dice" +  SinCOlor )
       
        Case "Amar"
                RichTextBox1.SelColor = vbYellow
                RichTextBox1.SelText = (RichTextBox1.SelText + "Servidor Dice" +  SinCOlor )
        Case "none"
                RichTextBox1.SelText = (RichTextBox1.SelText + "Servidor Dice" +  SinCOlor )
        Case Else
                'RichTextBox1.SelColor = &HFF& '=rojo
                RichTextBox1.SelText = (RichTextBox1.SelText + "Servidor Dice" +  SinCOlor )
    End Select

End Sub



Leete TRATAMIENTO DE CADENAS funciones Mid,Left,Instr,etc,etc,
Un Saludo .-.