关于variant out of bound的问题(100分)

  • 主题发起人 主题发起人 javaa
  • 开始时间 开始时间
J

javaa

Unregistered / Unconfirmed
GUEST, unregistred user!
在delphi中用mscomm通讯接收数据:
var
receive:variant;
a:array of byte;
i:integer;
procedure
receive:=mscomm1.input;
n:=0;
for i:=0 to 128 do
beging
a:=receive[n];
n:=n+1;
end;
现在问题是n只要大于127,就报variant out of bound ,我查了资料说variant只是可用做
短整型(<128),我现在只能接收<128个byte,如何解决?
 
有人知道么?
 
for i := 0 to [blue]127[/blue] do
...
就是 128 个数据了吧:)

//我现在只能接收<128个byte,如何解决?
我记得这是要分次接收的吧,一次最多只能接收一定大小的数据(你设置的门栏值),
但是你会接收到多次啊(该接收函数会触发多次),不就突破 128 了吗。
 
mscomm1.input应该是一个byte类型吧,
所以你的variant下标范围应该是0-127,所以你的数组越界了(你现在是0-128)
 
我没用过MSCOMM控件,SPCOMM的接收字符串是PChar型。
不知mscomm.input是什么类型,感觉不要用variant类型来转换input
 
我的意思是mscomm.input 接收的可以是variant类型的数据,但是如果收到的数据example,i>128就出错了(variant out of bound),那么大于127的数据难道就没办法接收?有谁做过这方面的?(用mscomm)
例如:接收数据 ff ff ff ff ff ff ff .........ff(>127)
 
倒,我不是说了吗,是分次接收的,你的事件响应函数会触发多次的
比如你要接收 128+100 个字节的数据,那么哪个事件响应函数会触发
两次,你第一次读取 128 字节放入自己缓冲区的前面,第二次响应的
时候又读取 100 字节,然后加到自己缓冲区的后面,就行了。
 
BETA:
事件响应函数该怎么定义呢,能否举例?
MSCOMM是通过MSCOMM1COMM来触发的。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
756
import
I
I
回复
0
查看
609
import
I
后退
顶部