自定义数据类型的讲解

为什么要使用自定义数据类型呢?
原因很简单,在现实生活中,比如一个学生他有姓名,学号,年龄,身高,出生年月,而在上一讲中,我们提到的数据类型无法满足现实生活需求,这个时候,自定义数据类型该派上用场了,我们可以定一个学生类型。从而达到我们的需求了。
自定义数据类型又可以分为子界类型,数组类型,记录类型,枚举类型,指针类型,集合类型等等。定义子界类型时,你不需要指定基类的名字,而只需提供该类型的两个常数。所用基类必须是有序类型,定义结果将是另一种有序类型。
Delphi 编译会通过,但在运行时,如果你开启了范围检查编译选项(在工程选项对话框的编译器页设置),你将得到 Range check error (范围检测错误)信息。
注意:建议你在开发程序时开启上述编译选项,以使程序更健壮并易于调试。这样即使遇上错误,你也会得到一个明确的信息而不是难以琢磨的行为。最终完成程序时你可以去掉这个选项,使程序运行得快一些,不过影响很小。因此我建议你开启所有运行时的检测选项,如溢出检查和堆栈检查,甚至提交程序时仍然保留它们。
枚举类型
Delphi 编译会通过,但在运行时,如果你开启了范围检查编译选项(在工程选项对话框的编译器页设置),你将得到 Range check error (范围检测错误)信息。
注意:建议你在开发程序时开启上述编译选项,以使程序更健壮并易于调试。这样即使遇上错误,你也会得到一个明确的信息而不是难以琢磨的行为。最终完成程序时你可以去掉这个选项,使程序运行得快一些,不过影响很小。因此我建议你开启所有运行时的检测选项,如溢出检查和堆栈检查,甚至提交程序时仍然保留它们。
枚举类型
序列中每个值都对应一个序号,序号从0开始计数。使用Ord 函数,即可得到一个枚举类型值的序号。例如,Ord (Diamond) 返回值1。
注意:枚举类型有多种内部表示法。缺省时,Delphi 用8位表示法;如果有多于256个不同的值,则用16位表示法。还有一种32位表示法,需要与C、C++库兼容时会用到。使用$Z 编译指令可改变缺省设置,请求更多位的表示法。
Delphi 帮助文件中列出了各种Delphi VCL枚举类型的可能值。你也可以通过OrdType程序查看Delphi 枚举类型、集合类型、子界类型及任何其他有序类型的取值列表。
图2为这个例子的输出结果。