detta... ...jag glömde säga att det enda som inte funkar är att "viska" i chatten... ElseIf Wisper = 1 Then Nej det borde inte vara så... ...Nu funkar det kom jag på...Varför funkar inte detta?
<code>
' Annan kod...
Private Sub Shout(User As String, Text As String, Command As Single, Wisper As Single, Reciever As Single)
Dim Client As Integer
' Avsändaren byter antingen namn eller skickar ett vanligt meddelande
If Wisper = 0 Then
For Client = 0 To Socket.UBound
If Command = 1 Then
' Skicka bara om socketen är ansluten
If Socket(Client).State = sckConnected Then
Socket(Client).SendData User & Text
DoEvents
End If
Else
' Skicka bara om socketen är ansluten
If Socket(Client).State = sckConnected Then
Socket(Client).SendData User & vbCrLf & " " & Text
DoEvents
End If
End If
Next Client
' Skicka till den klient avsändaren önskar viska till
ElseIf Wisper = 1 Then
If Socket(Reciever).State = sckConnected Then
Socket(Reciever).SendData User & " viskar:" & vbCrLf & " " & Text
DoEvents
End If
' Avsändaren ropar i chatten
Else
For Client = 0 To Socket.UBound
' Skicka bara om socketen är ansluten
If Socket(Client).State = sckConnected Then
Socket(Client).SendData User & vbCrLf & " " & UCase(Text) & "!"
DoEvents
End If
Next Client
End If
End Sub
'
' (lite mer kod...)
'
Private Sub Socket_DataArrival(Index As Integer, ByVal bytesTotal As Long)
Dim data As String
' Läs in den inkommande datan i data
Socket(Index).GetData data, vbString
' Om det första tecknet är ASCII 20 så är det ett kommando, inte ett meddelande
If Asc(Left(data, 1)) = 20 Then
' Alla kommandon är 4 tecken långa
Select Case Mid(data, 2, 4)
' Klienten vill ange/byta användarnamn
Case "USER"
' Spara användarnamnet i socketens .Tag så är den lättåtkomlig
Socket(Index).Tag = Mid(data, 7)
' Klienten vill avsluta
Case "QUIT"
' Bryt anslutningen
Socket(Index).Close
' Ignorera alla andra kommandon
Case Else
End Select
AddText Socket(Index).Tag & ": " & data
ElseIf Mid(data, 1, 6) = "<namn>" Then
Shout "(" & Socket(Index).Tag, " byter namn till " & Mid(data, 8) & ")", 1, 0, 0
AddText Socket(Index).Tag & ": <namn> " & Mid(data, 8) & " (" & Socket(Index).Tag & " byter namn till " & Mid(data, 8) & ")"
Socket(Index).Tag = Mid(data, 8)
ElseIf Mid(data, 1, 8) = "<scream>" Then
Shout Socket(Index).Tag & ":", Mid(data, 10), 0, 2, 0
AddText Socket(Index).Tag & " ROPAR: " & Mid(data, 10)
' Det var inte ett kommando, med andra ord var det text
ElseIf Mid(data, 1, 8) = "<wisper>" Then
Shout Socket(Index).Tag, Mid(data, 13), 0, 1, CInt(Mid(data, 10, 11))
AddText Socket(Index).Tag & " viskar: (" & Mid(data, 10, 11) & ") " & Mid(data, 13)
Else
' Skicka texten till alla anslutna klienter
Shout Socket(Index).Tag & ":", data, 0, 0, 0
' Lägg till datan och 'avsändaren' i loggen (.Tag)
AddText Socket(Index).Tag & ": " & data
End If
End Sub
</code>
Kan någon hjälpa m lilla mig?
Tja!Hmm. glömde...
då står det "Type missmatch..." och servern stängs ned... :(
Nåja... HJÄLP!!Sv: Hmm. glömde...
If Socket(Client).State = sckConnected Then
Socket(Client).SendData User & " viskar:" & vbCrLf & " " & Text
DoEvents
End If
Borde vara det rätta.
Förresten - använd inte single för t.ex. whisper. Använd Boolean i stället.
och om du måste ha tal - använd integer eller long om du inte behöver decimaler.
/Niklas JanssonSv: Hmm. glömde...
För Reciever ska vara den klient man viskar till...
Ha're! (eller var det kanin...?)Mm...
Man kan ju bara inte skriva det i chatruta... Då blir den (Reciever) både en Single och en String vilket flummar till det hela en aning =)
Jag gjorde en Combolist där man får välja vem man vill viska till istället, då skiljs ju strängen från den single man vill viska till!! =)
Ha're!