Delphi基础教程图文版之复合数据类型(子界)

我个人的理解子界类型更适合用于范围的定义, 例如,人的年龄一般为1到120岁,一年中的月数为1到12月,一月中的天数为1到31天等等。

如果能在程序中对所用的变量的值域作具体规定,就便于检查出那些不合法的数据,这就能更好地保证程序运行的正确性且在一定程度上节省内存空间。

子界类型能很好解决上面的问题。其实在数组的定义中,常用到子界类型,以规定数组下标的范围。

这是Delphi特有的一种数据类型,至少在我的认知中其它语言是没有的

定义

type

子界类型标识符=常量1..常量2

常量1称为子界的下界,常量2称为子界的上界;所谓的上界也就是开始的边界,而下界就是结束的边界

注意事项:

下界和上界必须是同一顺序类型(该类型称为子界类型的基类型),且上界的序号必须大于下界的序号。 例如

type
    age=1..100;
    letter='a' ..'z';

当然了,类似于前面提到的枚举类型,它也可以把类型声明和变量声明并为一步。可以直接在变量说明中定义子界类型。

type
    letter='a'..' z ';
var
    ch1,ch2:letter;

可以合并成:

var
    ch1,ch2:'a'..'d';

运算规则

凡可使用基类型的运算规则同样适用该类型的子界类型。例如,可以使用整型变量的地方,也可以使用以整型为基类型的子界类型数据。对基类型的运算规则同样适用于该类型的子界类型。例如,div,mod要求参加运算的数据为整, 因而也可以为整型的任何子界类型数据。基类型相同的不同子界类型数据可以进行混合运算。例如:设有如下说明:

var  x:1..100;
   y:1..500;
   z:1..1000;
    a:integer;

合法语句:a:=Sqr(x)+y+z; z:=x+y

y:=x+z+a; 当x+y+a的值在1~500范围内时是合法的,否则会出错。

应用举例

例1、判断当前是周几

  procedure TForm1.Button1Click(Sender: TObject);
var
  Week: 1 .. 7;
begin

  case Week of
    1:
      ShowMessage('周一');

    2:
      ShowMessage('周二');

    3:
      ShowMessage('周三');

    4:
      ShowMessage('周四');

    5:
      ShowMessage('周五');

    6:
      ShowMessage('周六');

    7:
      ShowMessage('周日');

  else begin ShowMessage('非法')
    end;
  end;
end;

猜你喜欢

转载自blog.csdn.net/farmer_city/article/details/111221369