Combobox winsock分割阵列
我的服务器上有此代码,用于创建更新消息Combobox winsock分割阵列,combobox,vb6,client-server,winsock,Combobox,Vb6,Client Server,Winsock,我的服务器上有此代码,用于创建更新消息 StrMsg = "1~Server~" For x = 0 To Combo1.ListCount - 1 If x = Combo1.ListCount - 1 Then StrMsg = StrMsg & Combo1.List(x) Else StrMsg = StrMsg & Combo1.List(x) & "~" End If Next x ' send i
StrMsg = "1~Server~"
For x = 0 To Combo1.ListCount - 1
If x = Combo1.ListCount - 1 Then
StrMsg = StrMsg & Combo1.List(x)
Else
StrMsg = StrMsg & Combo1.List(x) & "~"
End If
Next x
' send it to every connected clients
For x = 0 To clientCounter - 1
sckClients(x).SendData StrMsg
Next x
客户端将收到它,然后将其放在ComboBox1上
Private Sub sckClient_DataArrival(ByVal bytesTotal As Long)
Dim strData As String
Dim strMsg As String, tmp() As String, i As Integer
sckClient.GetData strMsg$, vbString
tmp$() = Split(strMsg$, "~")
For i% = 1 To CInt(tmp$(0)) - 1
Combo1.AddItem tmp$(i%)
Next i%
sckClient.GetData strData, vbString
End Sub
但是为什么我总是得到运行时错误13类型不匹配
这里怎么了-_- Split()函数返回字符串数组类型的变量,而不是字符串数组。除此之外,我会删除变量的类型声明符号——它们是旧版本BASIC的翻版
Private Sub sckClient_DataArrival(ByVal bytesTotal As Long)
Dim strData As String
Dim strMsg As String
Dim vastrTmp As Variant
Dim i As Integer
sckClient.GetData strMsg, vbString
vastrTmp = Split(strMsg, "~")
For i = 1 To CInt(vastrTmp(0)) - 1
Combo1.AddItem vastrTmp(i)
Next i
sckClient.GetData strData, vbString
End Sub
我有几个问题:
- 就像jac问的:你在哪一行得到错误
- 为什么循环到CInt(tmp$(0))-1 在您发布的代码中,您发送的字符串始终以1开头,因此tmp$(0)将始终为1,因此您将从1看向0(永远不会)
- 为什么在DataArrival结束时再次调用GetData
也就是说:我用你的代码创建了一个项目,在调试中没有得到任何类型不匹配的代码。特别检查tmp(0)的值。如果这没有帮助,你会在哪一行得到错误?