i:i+1;
 setlength(tbuf,i);//// 抱错地点
 抱错地点指着这行,所以错误位置是这行上面的那行就运行不过去。
 i:=i+1;

解决方案 »

  1.   

    tbuf[i]:=sbuf[k]; 
    ???????
    问题好像在这
      

  2.   


       type  gbuf=array [1..9] of byte;
        var  tbuf:array of gbuf;
       sbuf[1..90];
    //接收事件  
    begin
       先把com口数据存到gbuf中,
      if m=23 then
       begin
     i:=i+1;
            setlength(tbuf,i);//// 抱错地点   单步执行   无法设置长度吧
       ////将sbuf中 m-4 to m+4 考到tbuf[i]中,用循环拷贝
       for k:=m-4 to m+4 do 
             begin  
                tbuf[i]:=sbuf[k]; 
             end;      
        end;  
     end;   
    现在问题来了,程序运行到setlength(tbuf,i),就抱错不知是为什么:还是变量定义的位置有问题,
      

  3.   

    你需要指定tbuf的地二维,即:
    tbuf[i, j];