博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
子界类型(Subrange types)
阅读量:6367 次
发布时间:2019-06-23

本文共 1260 字,大约阅读时间需要 4 分钟。

子界类型(Subrange types)定义了某种有序类型的一个子集,子界的有序值必须是在别的有序类型中已经定义过的。子界中有序值的索引被基类确定。

它的形式为Low..High。这里LowHigh是同一个有序类型的常量表达式,并且LowHigh要小。

定义一个子界类型变量,那么赋给该变量的值必须是子界定义范围内的值。

还是举个详细的例子来说明吧。

1、新建一个Console Application

2、然后输入以下的代码,请仔细关注注释说明。

program Project1;{$APPTYPE CONSOLE}uses  SysUtils;const  X = 50;  Y = 10;type  Scale = 2 * (X - Y)..(X + Y) * 2; { 常量表达式}  //Scale = (X - Y) * 2..(X + Y) * 2;  { 此句声明和上面的low..high范围是一样,但是注释掉的这句会导致编译错误。  在任何类型声明中,等号(=)后面如果是左圆括号((),编译器则会认为是枚举类型,  依次上面声明不是枚举的话就会出错,避免声明不是枚举类型时,左圆括号出现在等号后面}  TColors = (Red, Blue, Green, Yellow, Orange, Purple, White, Black); { 枚举}  TMyColors = Green..White; { 定义一个子界类型,范围为枚举中的Green到White}  {TMyColors包括了Green, Yellow, Orange, Purple, White}  TSomeNumbers = -128..127; { 数字范围的子界类型}  TCaps = 'A'..'Z';         { 字符范围的子界类型}var  SomeNum: 1..500;         { 也可直接定义子界类型变量}  MyColors: TMyColors;  SomeNumbers: TSomeNumbers;  Caps: TCaps;  Letter: Char;begin  //Caps := 'e';  { 此句将导致编译错误“Constant expression violates subrange bounds”超出范围}  Letter := 'e';  Caps := Letter;  { 以上两句可以通过编译,但是运行下面的注释掉的代码也会出现错误,超出子界的范围}  //Writeln('Caps在TCaps中的索引为:' + IntToStr(Ord(Caps)));  MyColors := Green;  Writeln('Green在TMyColor中的索引为:' + IntToStr(Ord(MyColors)));  Readln;end.

3、F9运行后,我们来验证结果,结果如下:

以上代码均在Delphi7中测试通过,示例代码下载:

转载地址:http://afrma.baihongyu.com/

你可能感兴趣的文章
spx
查看>>
挂载相关
查看>>
检查指定游标是否存在的函数.sql
查看>>
帮助你构建自适应布局的30款优秀 jQuery 插件(上篇)
查看>>
Linux: fd_set和select()[zz]
查看>>
POJ-2513 Colored Sticks 字典树,欧拉回路
查看>>
让英文版windows 8支持非Unicode程序的语言方法
查看>>
威胁情报平台
查看>>
UnsupportedOperationException:can't convert to dimension :typx=0x1
查看>>
iOS之Cookie
查看>>
计算机网络学习笔记--传输层知识总结
查看>>
Android Dagger依赖注入框架浅析
查看>>
数据分析系统DIY1/3:CentOS7+MariaDB安装纪实
查看>>
常用分析工具
查看>>
PhotoShop切图
查看>>
[LeetCode] Water and Jug Problem 水罐问题
查看>>
java数组遍历——iterator和for方法
查看>>
Linux程序存储结构与进程结构堆和栈的区别【转】
查看>>
重置 radio 和 checkbox 的样式
查看>>
Android实战简易教程-第二十三枪(基于Baas的用户注冊和登录模块实现!)
查看>>