问题:Delphi中数组问题
描述:

procedure TForm1.ShowRead( Arr: Array of Byte; MyArr: TBytes);          //ShowRead函数
begin
  BlockRead(MyFile,Arr,Length(Arr));             //读取名片的信息
  SetLength(MyArr,Length(Arr));                  //让动态数组的长度和静态数组一样
  Move(Arr[0],MyArr[0],Length(Arr));              //静态数组转化为动态数组
  Str2 := Stringof(MyArr);               //用String变量保存
end;
下面的是其他procedure中的代码
var
   Name : array[0..7] of Byte;           //姓名的中间变量
   Tel : Array[0..10] of Byte;          //电话的中间变量
begin 
ShowRead(Name,MyName);                         //读取名片的名字
ShowRead(Tel,MyTel);
end;
这样可以吗?


解决方案1:

引用 3 楼 sinat_28679607 的回复:
因为ShowRead中的Arr定义的是动态数组,但是下面引用时为定长的静态数组。总觉得这样会出错。

procedure TForm1.ShowRead( Arr: Array of Byte; MyArr: TBytes);   
这里的ARR是开放数组,不是动态数组;MYARR才是动态数组。
开放数组参数可以兼容静态数组和动态数组 解决方案2:

BlockRead代码没有
看起来没有问题

上一篇我有一个设想,怎么实现?
下一篇用DELPHI如何调用其他语言写的DLL文件
明星图片
相关文章
《Delphi中数组问题》由码蚁之家搜集整理于网络,
联系邮箱:mxgf168#qq.com(#改为@)