读书人

二维数组作为参数传递进去函数无法在

发布时间: 2013-01-01 14:04:20 作者: rapoo

二维数组作为参数传递进入函数,无法在函数内设置其长度
Md = array[0..4] of integer;
procedure SplitData(var d1:array of Md );
var d2:array of Md ;
begin
//SetLength(d1,10);
SetLength(d2,10);
end;


数据类型,函数如上,注释行会出错,说是类型错误,不能理解为什么会出错,哪位能帮忙解释一下?
[DCC Error] Unit1.pas(132): E2008 Incompatible types
[解决办法]


type
Md = array [0..4] of integer;
TMD = array of Md;

procedure SplitData(var d1 : TMD);
var d2:array of Md ;
begin
SetLength(d1 , 10);
SetLength(d2,10);
end;

呵呵,对TMD这个类型的名称相当满意...
[解决办法]
顶楼上。。。。。
[解决办法]
不为什么,PASCAL语法定义参数不带array
[解决办法]
procedure SplitData(var d1:array of Md );

在参数声明中的array of xxx不代表Dynamic Array,而是Open Array Parameter,后者包含前者,但是范围更大,实参可以传入兼容类型的动态数组、静态数组、用[]构造器创建的临时数组,SetLength只能用于string或者dynamic array。

读书人网 >.NET

热点推荐