动态数组定义赋值编译不通过,但改变却可以便宜通过,请问问题存在哪里,为什么
var
  a : array of integer;
  b : array of integer;
  c : array of integer;
begin  setlength(a,1);
  b := a;  //编译出错在这里end;但换成另一种方法var
  a,b,c : array of integer;
begin  setlength(a,1);
  b := a;  //编译通过end;
请问上面通不过是为什么

解决方案 »

  1.   

    其实Delphi数组是比较让人烦火,感觉有点不合逻辑
    象如下代码:
    var 
      a : array of integer; 
      b : array of integer; 
      c : array of integer; 
    Delphi认为a,b,c不是一个类型。

    var
      a,b,c:array of integer; 又是同一个类型,也就是可以a:=b, c:=b;
    静态数组了也是一样的
    var 
      a : array[1..2] of integer; 
      b : array[1..2] of integer; 
    不同var
      a,b : array[1..2] of integer; //a,b同类型
      

  2.   

    类型不一致导致的, 可以这样写:type
      ArrayOfInteger = array of integer;var
      a : ArrayOfInteger;
      b : ArrayOfInteger;
      c : ArrayOfInteger;
    begin
      setlength(a,1);
      b := a;
    end;