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

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

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

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

1、新建一个Console Application

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

program Project1;
{$APPTYPE CONSOLE}
usesSysUtils;
constX = 50;Y = 10;
typeScale = 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';         { 字符范围的子界类型}
varSomeNum: 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中测试通过,示例代码下载:20111224子界类型(Subrange_types).rar

转载于:https://www.cnblogs.com/pchmonster/archive/2011/12/24/2300657.html

子界类型(Subrange types)相关推荐

  1. 子界类型的定义和应用

    引用: 如果我们定义一个integer类型,他的范围-2147483648...2147483647之间,事实上一个程序的变量都是有一定范围的:如人的年龄0到130岁,身高0到3米: 假如我们能在程序 ...

  2. Scala类型系统——高级类类型(higher-kinded types)

    高级类类型就是使用其他类型构造成为一个新的类型,因此也称为 类型构造器(type constructors).它的语法和高阶函数(higher-order functions)相似,高阶函数就是将其它 ...

  3. 定义定价用途的条件类型(Condition Types)

    一.说明 条件的存取顺序(access sequences)可以设置若干个条件表(Condition Table),但仅有存取顺序还不能维护条件的记录.能够维护条件记录的是条件类型(Condition ...

  4. SAP S/4HANA货币类型(Currency Types)和货币(Currency)配置

    文章目录 一.基本概念 1.1 货币(Currency) 1.2 货币类型(Currency Types) 二.货币配置-OY03 三.货币类型配置-FINSC_LEDGER 3.1 SAP 预置货币 ...

  5. 定义交货类型(Delivery Types)

    一.说明 本文档是定义交货类型(Delivery Types),也就是交货单的凭证类型(抬头).交货单涉及库房执行阶段,包括拣配.包装.运输以及WM库房操作等一系列子过程,最后以过帐完成交货步骤. 按 ...

  6. Free Pascal 学习笔记 第五章 字符类型 Character Types

    一.Char类型 一个字符一个字节,包含一个ASCII字符. Char类型通过将字符括在单引号中来指定字符常量,如'a' 'A' 二.WideChar 2个字节大小. 包含UTF-16编码的Unico ...

  7. findwindowex子窗口类型有哪几种_SQL-窗口函数

    一.窗口函数 含义 窗口函数,也叫OLAP函数(Online Anallytical Processing,联机分析处理),可以对数据库数据进行实时分析处理.窗口函数包含专用窗口函数和聚合函数,两者区 ...

  8. 定义交货输出条件类型(Output Types)

    一.说明 在向客户销售过程中,创建交货单后,通常会打印一张让用户去库房领料的通知单,这涉及到输出控制(Output Control).SAP的输出不仅是打印,还包含邮件.传真.EDI等.输出也是SAP ...

  9. TypeScript 工具类型 - Utility Types

    官方链接 Partial 构造一个 Type 的所有属性都设置为 optional 的类型. 此实用程序将返回表示给定类型的所有子集的类型. 例子: interface Todo {title: st ...

  10. edit类型 layui_Layer types described(图层类型描述)

    图层的 bird-eye 对照 (table format) 图层的详细描述 Layer type 2D/3D Time-aware(时间感知) Online/ offline Sources(来源) ...

最新文章

  1. 机器人带陀螺仪走钢丝_Sphero RVR 一个无所不能的可编程机器人!
  2. Javascript字符串的格式化
  3. linux 设置防火墙ssh,centos 8 ssh命令(服务器设置、防火墙配置等)
  4. 第14天学习Java的笔记(成员变量和局部变量)
  5. 奥尼尔的话剧《榆树下的欲望》
  6. android unbound prefix
  7. Vue或React多页应用脚手架
  8. jquery jeditable 多选插件 (checkbox or select)
  9. 事件与委托的一点概念理解
  10. 7-10 找最小的字符串 (15 分)
  11. checkbox修改默认样式
  12. c语言谭浩强第六章答案,C语言谭浩强版本第6章课后练习题答案..doc
  13. NodeJs或者命令行爬取网络教程并生成PDF文件,以阮一峰JavaScript教程和ES6教程为例 ...
  14. Redis 单线程却能支撑高并发
  15. KGB知识图谱技术能够解决哪些行业痛点?
  16. KVM切换器如何选购
  17. cPanel主机自定义php.ini文件
  18. MAC主机eclipse连接parallels内win7虚拟机oracle
  19. cf网络原因服务器无响应,CF老出现网络出现异常,与服务器断开
  20. python数字类型的分类和区别_讨论python的数据类型的区别

热门文章

  1. java的四种取整方法
  2. 从陪练到赢家:人机博弈的六十年
  3. 微信公众平台开发视频教程
  4. 中国传媒大学公开课:理解人类传播
  5. poj 3026 Borg Maze
  6. Mathcad绘制三维曲面图
  7. LOJ2360「NOIP2016」换教室
  8. whoami 显示“我是谁”
  9. 磁盘分区和目录的区别是什么
  10. java非静态内部类子类的调用_Java嵌套类和内部类详解