改为
procedure ComputeED(var EArr: array of single;var DArr:array of single;len:integer);应该可以

解决方案 »

  1.   

    你这两个数组的类型都不相等呀
    你看看下面的这种写法可能行
    TYPE
    FF=array [0..7500] of single;
    Var
      D: FF;
    ...
      ComputeED(E,D,l-1);
    ...
    procedure ComputeED(Const EArr:FF; DArr:FF;len:integer);
    var
      i:integer;
      total:single;
    begin
      total:=0.0;
      for i:=0 to len do
        total:=total+EArr[i];
      total:=total/(len+1);
      for i:=0 to len do
        DArr[i]:=(EArr[i]-total)*(EArr[i]-total);
    end;
      

  2.   

    不行啊,我去掉earr的const了,奇怪的是看得到earr的值,看不到darr的值,还有什么其他的办法吗
      

  3.   

    我没说清楚,EArr和DArr定义的时候都是array[0..7499] of single;应该没有类型不相等的问题吧
      

  4.   

    procedure ComputeED(Const EArr: array of single; DArr:array of single;len:integer);
    var
      i:integer;
      total:single;
    begin
      total:=0.0;
      for i:=0 to len do
        total:=total+EArr[i];
      total:=total/(len+1);
      for i:=0 to len do
        DArr[i]:=(EArr[i]-total)*(EArr[i]-total);
    end;你给Darr分配内存了吗?
      

  5.   

    请教怎么分配,好像用Setlength,只能分配0到256,而且我的目的是在子过程ComputeED中计算好数组值后放到原来的数组空间D中,以便我以后在主程序中用到这个在ComputeED计算好的这些值
      

  6.   

    procedure ComputeED(Const EArr: array of single; DArr:array of single;len:integer);改为
    procedure ComputeED(Const EArr: array of single;var DArr:array of single;len:integer);
    应该可以的嘛
      

  7.   

    谢谢cplusc,问题解决了,可是为什么要加var呢?
      

  8.   

    用Setlength,只能分配0到256, 那是对string类型,对 array of ..类型,无限
    但你不是说 EArr和DArr定义的时候都是array[0..7499] of single; 
    不应该用Setlength
      

  9.   

    fun( var a:type) ;
    ..
    a : 变量形参, 和实参共享存储单元