首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

二维数组作为参数传递进去函数,无法在函数内设置其长度

2013-01-01 
二维数组作为参数传递进入函数,无法在函数内设置其长度Md array[0..4] of integerprocedure SplitData(

二维数组作为参数传递进入函数,无法在函数内设置其长度
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。

热点排行