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是什么意思?
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是什么意思?
如果我有个数组赋值为Start19(5) = &HFE
Start19(6) = Asc("U")
请问ASC("U")的意思和用法,跟&HFE有什么区别?
Option Explicit 语句,是可以不声明变量的,这样的话你的变量将在第一次使用时自动被声明为 Variant 型,除非你在其后加上类型表示符,如 % & ! 等,但不推荐这样做
vbKey0 是系统常量,有数百个,具体有哪些请去查 MSDN
&Hxx 表示十六进制数 xx,比如 &HFF = 255
ASC("U") 是取得 "U" 的 ASCII 码(U的ASCII码是85)
还有什么问题?
建议楼主去补一补VB基本语法和语句使用
麻烦四楼在帮我回答一下这个问题:
如果是的话是不是每用到i一次就要写成i%的形式?就像
For i% = 0 To 3
MyIDTxt(8 + i%) = Start19(12 + i%)
Next i%一样?里面的i后面都有个%
MyIDTxt(8 + i%) = Start19(12 + i%)
Next i%关于I%的问题
我想,这里并没有声明变量
I后面的%只是个变量类型
因为作者没显式的声明变量I
所以作者在此处对I的变量类型作个限制
因为不如此的话I将是变体的,性能也就低了
在声明的同一行必须都有声明符。例如:
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就可以不要带声明符了。值得注意。
不过这种风格不推荐。
例如:
dim i as integer
dim j as integeri = 0
j = 4
if i <> 0 and 4/i then
...........
这个语句运行时将会报错,它是非短路式编译。值得注意。