在看delphi程序的时候看到aa=(a,b,c,d);这样的东西,还以为是数组,同事说是函数,呵呵,当然这两个都不屑一击,原来这样式子是在声明并付值一个枚举类型的数据。下边写下来DELPHI中枚举类型数据的介绍和使用方法。见笑。。
------------------------------------------------------
枚举类型
  Pascal程序不仅用于数值处理,还更广泛地用于处理非数值的数据。例如,性别、月份、星期几、颜色、单位名、学历、职业等。
1、枚举类型的定义
格式: type 枚举类型标识符=(标识符1,标识符2,…,标识符n)
2、枚举类型数据特点
① 枚举元素只能是标识符;
例如,下列类型定义是合法的:
   type days=(sun,mon,tue,wed,thu,fri,sat);
   colors=(red,yellow,blue,white,black,green);
   而下列类型定义是错误的:
   type colortype=('red','yellow','blue','white');
   numbers=(1,3,5,7,9);
定义枚举类型时列出的所有枚举元素构成了这种枚举类型的值域(取值范围)。

② 枚举类型属于顺序类型
  根据定义类型时各枚举元素的排列顺序确定它们的序号,且序号从0开始。
例如,定义type days=(sun,mon,tue,wed,thu,fri,sat);
则, ord(sun)=0,ord(mon)=1,……,以此类推。
枚举类型中的第一个元素无前趋,最后一个元素无后继。
pred(sat)=fri; succ(sun)=mon; ord(sat)=6;

③ 同一个枚举元素不能出现在两个或两个以上的枚举类型定义中。如下列定义是错误的:
   type color1=(red,yellow,white);
     color2=(blue,red,black); 
因为red属于枚举类型color1和 color2
④ 枚举类型变量只能进行赋值运算和关系运算,不能进行算术运算和逻辑运算。
  在枚举元素比较时,实际上是对其序号的比较。
 例如定义如下:
   type days=(sun,mon,tue,wed,thu,fri,sat);
     colors=(red,yellow,blue,white,black,green);
   var color:colors;
     weekday:days;
 则下面语句是合法的: weekday:=mon;
   if weekday=sun then write('rest');
 而下面语句是不合法的:
mon:=1; 错把枚举值当成变量名;
weekday:=blue; 枚举值blue不属于枚举变量weekday的值域;
read(color); 枚举类型变量 不能用读语句进行赋值;
write(weekday); writeln(blue);不能通过写语句输出枚举类型的变量值和枚举值。

⑤ 可以把变量的说明与类型的定义合并在一起,如:
  var holiday,workday:(sun,mon,tue,wed,thu,fri,sat);
    color:(red,yellow,blue,white,black,green);
对枚举数据的输入与输出可通过间接方式进行。输入时,一般可输入一个代码,通过程序进行转换,输出时,也只是打印出与枚举元素相对应的字符串。这在后面的例题中将有使用示例。
二、枚举类型的应用
例1、输入今天是星期几的序号,输出明天是星期几的英文单词(星期天序号为0)。
  type weekday=(sun,mon,tue,wed,thu,fri,sat);
   var i : integer;
     today,tomorrow : weekday;
  begin
   writeln('What date is it'); readln(i);
   case i of { 根据输入转换成枚举型 }
    0:today:=sun;
    1:today:=mon;
    2:today:=tue;
    3:today:=wed;
    4:today:=thu;
    5:today:=fri;
    6:today:=sat;
   end;
if (today=sat) then tomorrow:=sun else tomorrow:=succ(today);
   write('The tomorrow is ');
   case tomorrow of
    sun:writeln('sunday');
    mon:writeln('monday');
    tue:writeln('tuesday');
    wed:writeln('wednesay');
    thu:writeln('thursday');
    fri:writeln('friday');
    sat:writeln('saturday');
   end;
  end.
枚举类型是一种有序类型,所以枚举类型的变量可以作为循环变量。

DELPHI中枚举类型数据的介绍和使用方法的更多相关文章

  1. Delphi的枚举类型

    参考:http://blog.csdn.net/kissdeath/article/details/2060573 Delphi程序不仅可以用于数值处理,还更广泛的用于处理非数值的数据.例如:性别.月 ...

  2. 【转】Java基础笔记 – 枚举类型的使用介绍和静态导入--不错

    原文网址:http://www.itzhai.com/java-based-notes-introduction-and-use-of-an-enumeration-type-static-impor ...

  3. c#中枚举类型的定义与使用

    介绍枚举是一个指定的常数,其基础类型可以是除 Char 外的任何整型.如果没有显式声明基础类型,则使用 Int32.编程语言通常提供语法来声明由一组已命名的常数和它们的值组成的枚举.定义默认基数从O开 ...

  4. .SQL Server中 image类型数据的比较

    原文:.SQL Server中 image类型数据的比较 在SQL Server中如果你对text.ntext或者image数据类型的数据进行比较.将会提示:不能比较或排序 text.ntext 和 ...

  5. 《挑战30天C++入门极限》新手入门:C/C++中枚举类型(enum)

        新手入门:C/C++中枚举类型(enum) 如果一个变量你需要几种可能存在的值,那么就可以被定义成为枚举类型.之所以叫枚举就是说将变量或者叫对象可能存在的情况也可以说是可能的值一一例举出来. ...

  6. Spring的controller接受Date类型数据,接受枚举类型数据

    1. Controller接收Date类型的数据 核心使用@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") 来将传递过来的时间字符串 ...

  7. DELPHI中的消息处理机制(三种消息处理方法的比较,如何截断消息)

    DELPHI中的消息处理机制 Delphi是Borland公司提供的一种全新的WINDOWS编程开发工具.由于它采用了具有弹性的和可重用的面向对象Pascal(object-orientedpasca ...

  8. Delphi中String类型原理介绍

    Delphi中字符串的操作很简单,但幕后情况却相当复杂.Pascal传统的字符串操作方法与Windows不同,Windows吸取了C语言的字符串操作方法.32位Delphi中增加了长字符串类型,该类型 ...

  9. MVC中将枚举类型数据应用到下拉列表中的方法

    例如: public enum ItemTypes   {      Movie = 1,      Game = 2,      Book = 3   }    在MVC2.0中如何将以上枚举类型使 ...

随机推荐

  1. 【Flutter学习】基本组件之TabBar顶部导航

    一,概述 TabBar,是材料设计(Material design)中很常用的一种横向标签页.在Android原生开发中,我们常用ViewPage或者一些常用的标签页开源库,来实现并行界面的横向滑动展 ...

  2. paper 134:结构张量structure tensor(二)

    根据结构张量能区分图像的平坦区域.边缘区域与角点区域. 此算法也算是计算机科学最重要的32个算法之一了.链接的文章中此算法名称为Strukturtensor算法,不过我搜索了一下,Strukturte ...

  3. python 网络编程:socket

    在学习socket之前,我们先复习下相关的网络知识. OSI七层模型:应用层,表示层,会话层,传输层,网络层,数据链路层,物理层.OSI七层模型是由国际标准化组织ISO定义的网络的基本结构,不仅包括一 ...

  4. 【Windows、SVN】在Windows服务器下安装SVN,并在客户端能维护代码版本

    1.分别在客户端和服务器端安装软件 在网上搜索一下安装包的下载地址(这里暂不介绍) 得到2个安装文件 Server是装在服务器端的,另外一个装在客户端 2.安装SVN服务器端 基本一致下一步即可 特殊 ...

  5. python的OS模块生成100个txt文件

    #!/user/bin/env/python35 # -*-coding:utf-8-*- # author:Keekuun """ 问题:生成一个文件夹,文件夹下面生成 ...

  6. (转)使用openGL显示图像(一)建立OpenGL ES的环境

    编写:jdneo - 原文:http://developer.android.com/training/graphics/opengl/environment.html 要在应用中使用OpenGL E ...

  7. php+js实现极验滑块拖动验证码-tncode

    先上图: 演示地址:http://aso.39gs.com/tncode/index.html 相信在淘宝,斗鱼这些大网站都见到过这样的验证码了,拖动验证码比传统在移动端有更好的化验,减少用户的输入. ...

  8. Jmeter 5.1参数化csv引入文件

    Jmeter 5.1参数化csv引入文件 1.引用外部参数文件.新建json.txt文本输入需要的数据,我写了两条数据. 2.添加CSV数据文件设置,输入文件名.变量名.是否读取首行 报文中引用参数, ...

  9. Java语言基础及java核心

    一.Java语言特点 1. 简单 2. 面向对象 3. 分布式 4. 健壮 5. 安全 6. 中性架构跨平台 7. 超强的可移植性 8. 高性能 9. 多线程 二.java的环境变量 JAVA_HOM ...

  10. PHP实现RSA2加密

    PHP实现RSA2加密 1. 需要开启php的 php_openssl扩展 <?php /* * RSA2签名 * @param array 请求的参数 * @param string 私钥 * ...