DELPHI中枚举类型数据的介绍和使用方法
在看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中枚举类型数据的介绍和使用方法的更多相关文章
- Delphi的枚举类型
参考:http://blog.csdn.net/kissdeath/article/details/2060573 Delphi程序不仅可以用于数值处理,还更广泛的用于处理非数值的数据.例如:性别.月 ...
- 【转】Java基础笔记 – 枚举类型的使用介绍和静态导入--不错
原文网址:http://www.itzhai.com/java-based-notes-introduction-and-use-of-an-enumeration-type-static-impor ...
- c#中枚举类型的定义与使用
介绍枚举是一个指定的常数,其基础类型可以是除 Char 外的任何整型.如果没有显式声明基础类型,则使用 Int32.编程语言通常提供语法来声明由一组已命名的常数和它们的值组成的枚举.定义默认基数从O开 ...
- .SQL Server中 image类型数据的比较
原文:.SQL Server中 image类型数据的比较 在SQL Server中如果你对text.ntext或者image数据类型的数据进行比较.将会提示:不能比较或排序 text.ntext 和 ...
- 《挑战30天C++入门极限》新手入门:C/C++中枚举类型(enum)
新手入门:C/C++中枚举类型(enum) 如果一个变量你需要几种可能存在的值,那么就可以被定义成为枚举类型.之所以叫枚举就是说将变量或者叫对象可能存在的情况也可以说是可能的值一一例举出来. ...
- Spring的controller接受Date类型数据,接受枚举类型数据
1. Controller接收Date类型的数据 核心使用@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") 来将传递过来的时间字符串 ...
- DELPHI中的消息处理机制(三种消息处理方法的比较,如何截断消息)
DELPHI中的消息处理机制 Delphi是Borland公司提供的一种全新的WINDOWS编程开发工具.由于它采用了具有弹性的和可重用的面向对象Pascal(object-orientedpasca ...
- Delphi中String类型原理介绍
Delphi中字符串的操作很简单,但幕后情况却相当复杂.Pascal传统的字符串操作方法与Windows不同,Windows吸取了C语言的字符串操作方法.32位Delphi中增加了长字符串类型,该类型 ...
- MVC中将枚举类型数据应用到下拉列表中的方法
例如: public enum ItemTypes { Movie = 1, Game = 2, Book = 3 } 在MVC2.0中如何将以上枚举类型使 ...
随机推荐
- 使用JAVA如何对图片进行格式检查以及安全检查处理
一.通常情况下,验证一个文件是否图片,可以通过以下三种方式: 1).判断文件的扩展名是否是要求的图片扩展名 这种判断是用得比较多的一种方式,不过这种方式非常的不妥,别人稍微的把一个不是图片的文件的扩展 ...
- 原生写一个一键获取所有DOM元素的方法
一天挺一个朋友去面试要做一个获取dom元素到数组中 主要用到一个递归算法,通过节点的childNodes属性--代码如下: function getAllNode() { var nodes = do ...
- spring mvc 程序
首先我们的界面在返回的时候回根据我们的配置信息进行路径的查找 然后会识别我们的控制器返回的字符串(其实就是界面的名字)而找到界面的信息,eg:如果我们返回的是success那么就会去找我们的WEB- ...
- alerttemplate 时间戳转换
/*时间戳转换*/ template.defaults.imports.dateFmt = function(ns){ return new Date(parseInt(ns)).toLocaleSt ...
- javaScript的事件冒泡事件捕获
(1)冒泡型事件:事件按照从最特定的事件目标到最不特定的事件目标(document对象)的顺序触发. IE 5.5: div -> body -> document IE 6.0: div ...
- 12. MySQL简单使用
关于MySQL的使用,大家可以去网上看相关教程,但是为了保证阅读的连贯性,这里会做简单介绍. 创建数据库 我们双击刚刚新建的数据库,然后双击mysql,点击新建查询,可以在编辑器里面输入一些mysql ...
- 前端学习笔记——引入css文件、样式优先级
CSS样式的引用方式有三种:行间样式表>内部样式表>外部样式表. 如果只有一种样式,那么优先级“由内到外 由近到远” 1.行间样式表--内联方式 内联方式指的是直接在 HTML 标签中的 ...
- 08、python的基础--->文件操作
注:用btyes方式的一般都是在“非文字类的(比如图片)” 1.文件的读取 >>>第1种 #绝对路径 s = open('E:\天气.txt', mode='r', encoding ...
- 论一个PHP项目上线的注意点
一.后端问题 服务器配置要跟上流量 预估QPS时要给足未知流量的空间 后端数据库设计要根据项目大小来相对应,小型流量单表就可以,但是中大型要分库分表 在处理执行修改的操作时一定要多一层判断(判断是否已 ...
- jmeter 后台运行 setsid bin/jmeter -n -t .jmx文件 -l .jtl文件
备注: 另外,在Linux下我们有时候希望线程可以在后台运行,这样我们关闭当前连接后,线程依然可以运行,这里提供一个将 jmeter命令设置为后台线程的方法. 使用setsid命令: setsid ...