串口通信中动态数组的问题(80分)

C

cp0574

Unregistered / Unconfirmed
GUEST, unregistred user!
我在程序中设置了两个动态数组rbuf,sbuf
CONST CON=100;
VAR rbuf,sbuf:array of byte;
……
setlength(sbuf,con);
for i:=1 to con do sbuf:=i;
senddata(SPCOMM发送数据)
……
SBUF 的使用没有问题。

然后在接收收据时(自发自收)
procedure TFcomm.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
……
begin
setlength(Rbuf,BufferLength);
viewstring:='';
for i:=1 to BufferLength do
viewstring:=viewstring+inttohex(rbuf,2)+' ';
……
end;
在上面的“viewstring:=……”发生了错误,而我如果把sbuf,rbuf的定义改成 VAR rbuf,sbuf:array[1..con] of byte;
就没有一点错误。这是为何???
 
Rbuf是从0开始的,rbuf[0..len-1]
 
下维从0开始?是什么意思?
 
for i:=0 to BufferLength-1 do
viewstring:=viewstring+inttohex(rbuf,2)+' ';
 
Dynamic arrays are always integer-indexed, always starting from 0.
 
顶部