求例子以便容易深入了解, 越简单越好:“数组(Array)”和“子界(Subrange)”有什么分别,怎么用??“命名”它会达到什么效果?“不命名”它又怎样,var里的“不命名”在未来会带来什么??请高手高抬贵手。。

解决方案 »

  1.   

    http://www.cnblogs.com/zsdentist/articles/1630113.html
      

  2.   

    1L 正解,补充一下 数组可以存储各种类型的数据,而枚举是自定义的有序类型,仅限布尔,数字,字符
    再补充一个枚举的连接
    http://blog.sina.com.cn/s/blog_4d6f55d901009a35.html
      

  3.   

    数组是连续的同类型数据在内存中的连续顺序分配,占用内存大小为 数据类型大小x数组个数
    数据类型大小可用 sizeof()函数获取
    子界 是一种数据类型,本身不占用任何内存。可以利用Delphi强类型特点用子界实现数据越界检查与限制,子界也是有序类型集合 是一种类似位操作的的数据类型,特点是可以支持集合运算,常用于多值组合或多属性配置枚举 同子界很相似,默认是一个从 0 开始的子界,而且子界各成员都有别名,枚举是有序类型
      

  4.   

    32143041 delphi技术全,大牛具多,不可错过
      

  5.   

    为了后续使用或直接用于变量,需要给自定义类型命名。如果自定义一个命名的类型,你必须将代码放在特定的type区,如下所示:type // subrange definition Uppercase = 'A'..'Z'; // array definition Temperatures = array [1..24] of Integer; // record definition Date = record Month: Byte; Day: Byte; Year: Integer; end; // enumerated type definition Colors = (Red, Yellow, Green, Cyan, Blue, Violet); // set definition Letters = set of Char;你也可使用类型定义构造器直接定义一个变量,此时无需显式命名,如下面的代码:var DecemberTemperature: array [1..31] of Byte; ColorCode: array [Red..Violet] of Word; Palette: set of Colors;注意:一般来说,你应该避免使用上述不命名类型,因为你不能把它们作为参数传给例程,也不能用于声名同一类型的其他变量。实际上,Pascal的类型兼容规则是基于类型名的,而不是基于实际的类型定义。两个类型相同的变量仍有可能是不兼容的,除非他们的类型有完全相同的名字。对于不命名类型,需要编译器给它分配一个内部名字,因此对于数据结构复杂的变量,要习惯于定义命名数据类型,你一定不会为此白费工夫的。但是上述自定义类型有什么意义呢?如果你不太熟悉Pascal类型构造器,通过下面内容你会了解它,此外下面还谈到了同类构造器在不同语言中的差异,因此如果你已熟知上面例举的类型定义,不妨往下读,你会对其中内容感兴趣的。最后,我将演示一些Delphi例子,并介绍一些能动态访问类型信息的工具。子界类型 子界类型定义了某种类型的取值范围(因此定名subrange)。你可定义整数类型的子界类型,如取值从1到10或从100到1000,或者定义字符类型的子界类型,如下所示: type Ten = 1..10; OverHundred = 100..1000; Uppercase = 'A'..'Z';定义子界类型时,你不需要指定基类的名字,而只需提供该类型的两个常数。所用基类必须是有序类型,定义结果将是另一种有序类型。如定义一个子界变量,那么赋给该变量的值必须是子界定义范围内的值。下面代码是正确的:var UppLetter: UpperCase;begin UppLetter := 'F';以下代码则是不正确的: var UppLetter: UpperCase;begin UppLetter := 'e'; // compile-time error以上代码将导致一个编译错误:“Constant expression violates subrange bounds”。如果代之以下面代码:var UppLetter: Uppercase; Letter: Char;begin Letter :='e'; UppLetter := Letter;Delphi 编译会通过,但在运行时,如果你开启了范围检查编译选项(在工程选项对话框的编译器页设置),你将得到 Range check error (范围检测错误)信息。注意:建议你在开发程序时开启上述编译选项,以使程序更健壮并易于调试。这样即使遇上错误,你也会得到一个明确的信息而不是难以琢磨的行为。最终完成程序时你可以去掉这个选项,使程序运行得快一些,不过影响很小。因此我建议你开启所有运行时的检测选项,如溢出检查和堆栈检查,甚至提交程序时仍然保留它们。枚举类型 枚举类型又是一种自定义有序类型。在枚举类型中,你列出所有该类型可能取的值,而不是指定现有类型的范围。换句话说,枚举类型是个可取值的序列。见下例:type Colors = (Red, Yellow, Green, Cyan, Blue, Violet); Suit = (Club, Diamond, Heart, Spade);序列中每个值都对应一个序号,序号从0开始计数。使用Ord 函数,即可得到一个枚举类型值的序号。例如,Ord (Diamond) 返回值1。注意:枚举类型有多种内部表示法。缺省时,Delphi 用8位表示法;如果有多于256个不同的值,则用16位表示法。还有一种32位表示法,需要与C、C++库兼容时会用到。使用$Z 编译指令可改变缺省设置,请求更多位的表示法。
      

  6.   

    这是Pascal精要里提到的, 我重复看了很多次。。 现在明白了~