在implementation之前声明变量和在方法(过程)中声明的变量有什么区别?
我说的不是作用范围,比如在implementation之前声明一个array1 : array of byte 和在方法(过程)中声明的有什么不一样。是不是在方法(过程)中声明的必须要用setlength才可以用(指定长度)。那在implementation之前声明的长度又怎样呢?在用时长度怎么确定呢?还有DELPHI中那些类型的数组的下标是从0开始的,那些的是从1开始的?olevariant是什么类型啊?大家帮我分析一下。

解决方案 »

  1.   

    动态数组(array of ...)在使用之前都需要SetLength的,不管它的申明是在哪里。Delphi(应该说是Pascal)的数组下标是一个子界类型,并不存在着从0还是从1开始的概念,是从子界类型(也肯定是个有序类型)的下界(最小值)开始的,例如:type
      AAA = 'A'..'Z';
      BBB = 0 .. 100;var
      A: array [1..10] of String;
      B: array [0..10] of Byte;
      C: array ['A'..'Z'] of Integer;
      D: array [AAA] of Long;
      E: array [BBB] of Char;
      

  2.   

    那么 A: array [1..10] of String;就不属于动态数组,即有长度.A:array of string就属于数组?但在implementation之前声明不使用setlength好象也可以使用!
      

  3.   

    动态数组的下标一律从0开始,如果记不住,或为了保险,使用low(AnArray)访问数组下限,high(AnArray)访问数组上限
      

  4.   

    implementation前后申明的变量用法都一样。
    动态数组下标从0开始,使用的时候需要指定长度,因为分配的时候里面其实已经有了初值,你不指定长度的话,读取的时候不知道哪里是有效长度。
    静态数组的上标和下标是自己指定的。