function GetIdArray(var idArtray:array of integer): boolean;
begin
setLength(idArray,100);
// 上面这句话编译错误
end;请指教

解决方案 »

  1.   

    不要这么定义!
    先声明一个数组 :idArray : array of Integer;
    数组本来就是传地址的所以不需要var了
    funciton GetIdArray : Boolean;
    begin
      SetLength(idArray,100);
    end;
      

  2.   

    有2个错误,
    1:setLength(idArray,100);//idArray与定义不同,改为idArtray;
    2:应该改为
      type
      AA= array of integer;
      function GetIdArray(var idArtray:AA): boolean;
    begin
      setLength(idArtray,100);
    end;
      

  3.   

    type
      ai=array of Integer;function GetIdArray(var idArtray:ai): boolean;
    begin
      SetLength( idArtray,20);
      idArtray[1]:=343;  idArtray[2]:=343;
      // 上面这句话编译错误
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
      i:ai;
    begin
    GetIdArray(i);
    end;
      

  4.   

    这里直接length(idArtray)就可以了,数祖传参数进来的是地址,规范叫引用传递。这个数组进来后就已经是有长度的了!
      

  5.   


     出的是下面的这个错误:Incompatible types 我按第一种方法去除了 var  还是上面的错误
      

  6.   

    没错
    type
      AA= array of integer;
      function GetIdArray(var idArtray:AA): boolean;
    begin
      setLength(idArtray,100);
      idArtray[1]:=343;  idArtray[2]:=343;end;procedure TForm1.Button2Click(Sender: TObject);
    var
      i:AA;
    begin
    GetIdArray(i);
    end;
      

  7.   


     按 u2m(UpToMe) 方法成了。
     请问能讲解一下为什么要把 array of integer 定义为新类型才可以呀?
     多谢