博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

枚举类型的定义和应用

Posted on 2009-05-28 21:54  longker的博客  阅读(571)  评论(0)    收藏  举报

1.枚举类型定义:


TYPE
  days     
= (Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday);  //枚举类型,属于顺序类型,序号从0开始
  colors   
=(red,yellow,blue,green,black);                               //可以同时多个枚举类型定义
  
//下面定义方法是错误的
  days_e1  
=('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');   //错误:枚举类型元素只能是标识符;
  days_e2  
=(1,2,3,4,5,6,7);  //错误:枚举类型元素只能是标识符;
  colors_e1
=(red,yellow,white)//错误:枚举类型中元素不能和其他的元素相同;

 

2.类型类型可以用 顺数函数ord,pred,succ,low,high操作

var
  week  : days;
  color : colors;
  temp :Variant;
begin
//  temp:=Ord(Monday);       //返回 1
//  temp:=Pred(Tuesday);     //返回 1
//  temp:=Pred(Sunday);      //返回 255
//  temp:=Succ(Tuesday);     //返回 3
//  temp:=Succ(saturday);    //返回 7
//  temp:=Low(week);         //返回 0
//  temp:=High(week);        //返回 6

  ShowMessage(temp);
end;

 

 3.枚举类型变量只能进行赋值运算和关系运算,不能进行算术运算和逻辑运算。

//合法性:
  week :
= Sunday;
  
if week=Sunday then write('rest');
//不合法的:
  Sunday :
= 1;           //错把枚举值当成变量名;
  days   :
= blue;       //枚举值blue不属于枚举变量weekday的值域;
  
read(color);           //枚举类型变量 不能用读语句进行赋值;
  
write(week); writeln(blue);//不能通过写语句输出枚举类型的变量值和枚举值。

 

4.枚举类型应用:

  temp:=StrToInt(Edit1.Text);
  
case temp of
    
0:week:=Sunday;
    
1:week:=Monday;
    
2:week:=Tuesday;
    
3:week:=Wednesday;
    
4:week:=Thursday;
    
5:week:=Friday;
    
6:week:=Saturday;
  
end;