动态数组定义赋值编译不通过,但改变却可以便宜通过,请问问题存在哪里,为什么
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里,在前种情况下,你分开定义了变量A,B;虽然我们看起来是同样的数据类型定认,但DELPHI认为
    你定义的A,B不是同数据类型;换句话说,你换行定义的"看起来"是一种数据类型的变量,但在DELPHI语言中,它认为不是.
    这是DELPHI语言的强类型检查的结果;对于后者,因为是在同一个定义中声明的变量,因此,DELPHI认为是同一种数据类型,所以正确.
    一般地,我们都是这样操作的
    type Tdata=array of byte;//声明一种数据类型.
    var 
     a,b:tdata;
     c:tdata;
      

  2.   

     谢谢,给分,但我觉得borland 确实不应该这样
    因为
    var 
       a : integer;
       b : integer;
       a := b;  这样不是也不行么,编译器都做到那程度了,还差这一点,呵呵
    不过给分了
      

  3.   

    谢谢,给分,但我觉得borland 确实不应该这样 
    因为 
    var 
      a : integer; 
      b : integer; 
      a := b;  这样不是也不行么,编译器都做到那程度了,还差这一点,呵呵 
    不过给分了-------------------------------------看来无知还真是可以做到无畏滴!楼主:你应当好好学学:编译器内置数据类型(原型或基本数据类型)与编译器扩展数据类型的区别;