delphi的copy函数在复制字符数组时对不同起始下标的数组会有完全不同的处理结果.
分析如下:
当下标从0开始时,无论设置复制长度是多大,copy的结果都会自动以0字符结尾,
而下标从1开始时,一切正常.
例:
var buff:array [0..255] of char;
var recbuff:string;
var len,i:integer;
procedure TForm1.FormCreate(Sender: TObject);
begin
recBuff:='';
for i:=1 to 8 do buff[i]:=char(0);
buff[1]:=char(3);
len:=7;
recBuff:=copy(buff,1,len);
SELF.Caption:=inttostr(length(recBuff));
end;
上面这段代码显示结果为:0
var buff:array [1..255] of char;
var recbuff:string;
var len,i:integer;
procedure TForm1.FormCreate(Sender: TObject);
begin
recBuff:='';
for i:=1 to 8 do buff[i]:=char(0);
buff[1]:=char(3);
len:=7;
recBuff:=copy(buff,1,len);
SELF.Caption:=inttostr(length(recBuff));
end;
上面这段代码显示结果为:7