程序需要用户在text1文本框中输入命令,如需要输入"abc",回车后程序需要将abc这个指令发送到远程服务器.我使用数组的方法来发送如下,结果发送正常,返回数据也正常.
Dim Byte1(2) As Byte
Byte1(0) = &H61     '发送a  检查封包中61-87对应字母a-z,30-39对应数字0-9 
Byte1(1) = &H62     '发送b
Byte1(2) = &H63     '发送c
Winsock1.SendData Byte1现在的疑问是:
1:当用户需要输入的指令格式为命令+序号时,如"abc123"时,这时的数组使用就不定长度了,这时的数组该如何去定义自己的大小?
2:程序如何将text1.text中的内容abc123自动翻译并写到数组对应的项去?

解决方案 »

  1.   

    Private Sub Command1_Click()
    Dim byte1() As Byte
    Dim i As Long
    byte1 = "AAAAAADdddDD"
    For i = LBound(byte1) To UBound(byte1)
        Print byte1(i)
    Next iEnd Sub以上是unicode,如果要发送的都是ansi的用strconv函数转换就成了.
      

  2.   

    StrConv(byte1) 参数不可选
    61-86对应字母a-z,30-39对应数字0-9 是什么码?
      

  3.   

    ansi是1个字母1个字节,unicode是1个字2个字节.Dim byte1() As Byte, byte2() As Byte
    Dim i As Long
    byte1 = "AAAAAADdddDD"byte2 = StrConv(byte1, vbFromUnicode)For i = LBound(byte2) To UBound(byte2)
        Print byte2(i)
    Next i
      

  4.   

    可能题目写得不够清楚,我的需求是如何根据TEXT1的文本内容怎么写入数组中去,由于文本内容中的数据可大可小,那么数组大小也随之变化,并且文本内容也要写到内容中去.
      

  5.   

    用动态数组
    请楼主看看StrConv函数
      

  6.   

    byte1()就是可以接受变长的数组。
      

  7.   

    Dim byte1() As Byte, byte2() As Byte
    Dim i As Long
    byte1 = Text1.textbyte2 = StrConv(byte1, vbFromUnicode)For i = LBound(byte2) To UBound(byte2)
    Winsock1.SendData Byte2()
    Next i您的意思代码应该是这样来发送指令数据流吧?我现在试不了,你看是否这样?
      

  8.   

    For i = LBound(byte2) To UBound(byte2)
    Winsock1.SendData Byte2()
    Next i改成Winsock1.SendData Byte2()
      

  9.   

    For i = LBound(byte2) To UBound(byte2)
    Winsock1.SendData Byte2()
    Next iFor i = LBound(byte2) To UBound(byte2)
    Next i
    Winsock1.SendData Byte2
    发数据流上述谁正确?
      

  10.   

    如果单字节发送:
    For i = LBound(byte2) To UBound(byte2)
    Winsock1.SendData Byte2(i)
    Next i实际上可以一次发送过去的,对于大的数据量,在接收端就要处理一下了。
    这样可以一次发送:
    Winsock1.SendData Byte2
      

  11.   

    ansi是1个字母1个字节,unicode是1个字2个字节.???????
    这位老大的叙述似乎有点问题吧,ANSI是不是4字节而UNICODE是8字节啊?就看到这里了,出去逛街了,放假麻
      

  12.   

    哦哦哦,对了,本人以上言论请参考《WINDOWS核心编程》UNICODE字符一章哦
      

  13.   

    这个问题为什么要追究Ansi的问题?
    vb内部都是用unicode,外部是ansi
      

  14.   

    dim txd as variant
    dim buf() as byte
    dim pnt as long redim buf(0 to 1000)
    pnt = 0
    buf(pnt) = &h61:pnt = pnt + 1
    buf(pnt) = &h62:pnt = pnt + 1
    buf(pnt) = &h63:pnt = pnt + 1
    buf(pnt) = &h31:pnt = pnt + 1
    ....
    ...
    ...
    buf(pnt) = ??:pnt = pnt + 1
    redim preserve buf(0 to pnt)
    txd = buf
    wsocket.senddata txt
      

  15.   

    同意楼上。
    txt=buf
    buf=txt
    byte()和string可以互相给值.
      

  16.   

    试了,贴中2位的方法都可行,最后问个问题:
    分析封包内容,在指令的前后都有一些控制字符,这些字符是定值定长的,如何放在与byte数组内一起发送。
    搞定结贴了。谢谢