调试MSCOMM32控件的时候,偶尔出现一个错误:Variant array index of out of bounds。
怎么解决?
怎么解决?
解决方案 »
- wsaaccept拒绝客户端后出现syn_received,求助解决
- 急!那位大侠帮忙看看文字转换成语音文件的问题(源码),
- 刘艺的新书<<Delphi 面向对象编程思想>>看过的人请举手
- 如何将字符串类型转成字符类型????????????????????????????????????????????????????????
- 用delphi7写数据库程序,请大家推荐3本比较好的书,1、程序员指南之类用来学如何用使用delphi7这个软件的。2、参考手册之类当字典用查函
- 动态创建控件一般情况下,最多能创建几个?
- 公司将上新项目,主要用VB和JAVA,我要换工具了。散分,感谢大家无私的帮助!
- 请问如何判断currency是否设为真??(不够加分)
- 请问delphi做的软件如何加密
- 有关网络接收与发送数据的问题?!接收到的数据与发送端不同?!
- 明细报表的形式上的特殊问题
- 向某一应用程序的文本框输入文本: 如QQ消息发送框
VAR
reData:array of byte;//Variant;
restr:string;
mscommdata:array[0..4]of word;
i,l:longint;procedure TForm1.MSComm1Comm(Sender: TObject); //接收数据
var
wdata0,wdata1:word;
begin
redata:=mscomm1.Input; // 接收数据
restr:='';
for i:=0 to vararrayhighbound(redata,1) do
begin
restr:=restr + inttohex(redata[i],2)+' ';
end;
memo3.Lines.Add(restr);
for i:=0 to 4 do //提起前五位数据
mscommdata[i]:=redata[i];
if redata[0] =241 then
begin
wdata0:=mscommdata[2]*256+mscommdata[1];
wdata1:=mscommdata[4]*256+mscommdata[3];
y1:=y10-round(wdata0/40); //第一通道波形数据
y2:=y20-round(wdata1/40); //第二通道波形数据
label14.Caption:=inttostr(wdata0);
end
else ;//exit;end;在单步执行时,发现不了!大家帮看哈!!
for i:=0 to 4 do //提起前五位数据
mscommdata[i]:=redata[i];
时候造成越界的
try
except 将I的值和数组的长度等信息显示出来。
end;你确定是收到5个字节的数据吗?
如果确定是5个,则定义成reData:array[0..4] of byte;
我定义为MSCOMM接收到5字节数据才响应事件,也得到验证了
如果定义为:reData:array[0..4] of byte;
那么这句代码该怎么改:redata:=mscomm1.Input; // 接收数据