Private Sub SendMyID()'-- fe fe fe fe fe Soh Stx A _ _ _ _ 0 Etx Bcc Bcc Bcc
    Dim MyIDTxt(0 To 16) As Byte
    Dim bcc As Byte
  
    bcc = 0
  
    For i% = 0 To 4
        MyIDTxt(i%) = &HFE    '5 个同步字符
    Next i%
    MyIDTxt(5) = Soh    '59 个测试符号+3 个类型码为正文的长度
    MyIDTxt(6) = Stx    '正文开始符 STX
    MyIDTxt(7) = vbKeyA
  
    '---- 产生头19个字节
    GenHead19
  
    '---- 头19个字节
    For i% = 0 To 3
        MyIDTxt(8 + i%) = Start19(12 + i%)
    Next i%
    
    '---- 类型码
    MyIDTxt(12) = vbKey0
    
    '---- 正文结束符 ETX
    MyIDTxt(13) = Etx
    
    '---- 求校验码
    For i% = 6 To 13
        bcc = bcc Xor MyIDTxt(i%)
    Next i%
    
    '---- 校验码
    For i% = 0 To 2
        MyIDTxt(14 + i%) = bcc
    Next i%
    
    '---- Send 整个报文
    Call SendArray(MyIDTxt)
    
End Sub像以上过程中的如下语句:
For i% = 0 To 3
        MyIDTxt(8 + i%) = Start19(12 + i%)
Next i%是不是在此处才声明了i?就像在首部做dim i as integer声明,然后在这就直接用
for i=0 to 3一样的效果?如果是的话是不是每用到i一次就要写成i%的形式?就像上面
for循环体中那样。那如果是数组的话应该怎么样用类型表示符来声明?如果没有在首部声明的话,是不是也要在数组用到的每个地方都要给出类型表示符?
而MyIDTxt(12) = vbKey0   这句中的vbkey0是不是系统常量?都有哪些啊?
最后就是MyIDTxt(i%) = &HFE     语句中的&HFE是什么意思?

解决方案 »

  1.   

    另外接上面的&HFE问题。
    如果我有个数组赋值为Start19(5) = &HFE
                       Start19(6) = Asc("U")
    请问ASC("U")的意思和用法,跟&HFE有什么区别?
      

  2.   

    建议在每个过程的首部声明变量,这是一个好习惯,如果你的程序最前面没有
    Option Explicit 语句,是可以不声明变量的,这样的话你的变量将在第一次使用时自动被声明为 Variant 型,除非你在其后加上类型表示符,如 % & ! 等,但不推荐这样做
    vbKey0 是系统常量,有数百个,具体有哪些请去查 MSDN
    &Hxx 表示十六进制数 xx,比如 &HFF = 255
    ASC("U") 是取得 "U" 的 ASCII 码(U的ASCII码是85)
    还有什么问题?
    建议楼主去补一补VB基本语法和语句使用
      

  3.   

    没办法,以前从没编过,突然给了我200多页的程序,叫我读懂了照编个,正在边看别人的程序边学习中,只有3个星期时间了。
    麻烦四楼在帮我回答一下这个问题:
    如果是的话是不是每用到i一次就要写成i%的形式?就像
    For i% = 0 To 3
            MyIDTxt(8 + i%) = Start19(12 + i%)
    Next i%一样?里面的i后面都有个%
      

  4.   

    能不能推荐像<<C++Primer>>这样的VB基础读物?
      

  5.   

    For i% = 0 To 3
            MyIDTxt(8 + i%) = Start19(12 + i%)
    Next i%关于I%的问题
    我想,这里并没有声明变量
    I后面的%只是个变量类型
    因为作者没显式的声明变量I
    所以作者在此处对I的变量类型作个限制
    因为不如此的话I将是变体的,性能也就低了
      

  6.   

    关于%,!,&的应用。
    在声明的同一行必须都有声明符。例如:
    for i% = 0 to 3
        s! = s! & i
    next 
    L& = s
    s = s &"1"
    这是integer,single,long型的互换,第5行是s后接个字符“1”,注意,也只能接数字。将自动转换为single型。否则报类型不一致的异常。其中i 为integer型,L为long型。
    第2行中第二个s后的声明符‘!’必不可少。但第5行里的s就可以不要带声明符了。值得注意。
    不过这种风格不推荐。
      

  7.   

    关于这一点又使我想起,在vb里的逻辑表达式的编译方式与java和c的不同。
    例如:
    dim i as integer
    dim j as integeri = 0
    j = 4
    if i <> 0 and  4/i  then
    ...........
    这个语句运行时将会报错,它是非短路式编译。值得注意。