Dim sendSj(11) As Byte, i As Long
Dim a(1 To 3) As Long
a(1) = Text1.Text
a(2) = Text2.Text
a(3) = Text3.Text
For i = 0 To 11 Step 4
CopyMemory sendSj(i), a(i / 4 + 1), 4
Next
MSComm1.Output = sendSj
楼上两位的说法都是有错的。a(1) = Text1.Text这个本身是不会提示类型不匹配的,VB会自动转换Text1中的文本数字为数值型数字然后再赋值给长整型变量的,除非Text1中输入的不是数字才会出错,所以加上Val()函数这个倒是没错的。真正提示类型不匹配的是CopyMemory函数的第二个参数不能用a(),而应该指定数组的具体元素,比如a(1)。
Dim sendSj() As Byte
Dim a(1 To 3) As Long
a(1) = Val(Text1.Text)
a(2) = Val(Text2.Text)
a(3) = Val(Text3.Text)
CopyMemory sendSj(0), a(1), 4
MSComm1.Output = sendSj(0)
不知道你要怎么整,反正错的地方很多,text控件的text属性是文本型,你却没有转换就把他赋值到长整型,然后CopyMemory时sendSj(0),你既然要取值是数组的0,为什么定义数组的时候要定义成1呢?VB6的数组下标是从0开始的,你干脆不指定数组最大值。然后内存块的大小直接a(),这是什么意思我想想问问你啊,数组能这样用吗???? 何况内存块的大小是字节型Byte,你却给个长整型。。。最后MSComm1.Output直接等于sendSj,sendSj是数组啊,你没指定获取数组中的哪一个,你就直接给个变量名?就单单这个地方就够类型不匹配了,你这样写代码谁也救不了你,因为没人看得懂你想表达什么
Dim sendSj(1) As Byte
Dim a(1 To 3) As Long
a(1) =val( Text1.Text)
a(2) = val(Text2.Text)
a(3) =val( Text3.Text)
CopyMemory sendSj(0), a(), 4
MSComm1.Output = sendSj
Text1.Text本身是字符串类型,不能直接赋给Long。