Delphi的枚舉類型

參考:http://blog.csdn.net/kissdeath/article/details/2060573學習

 

  Delphi程序不只能夠用於數值處理,還更普遍的用於處理非數值的數據。例如:性別、月份、星期幾、顏色、單位名、學歷、職業等。spa

1.枚舉類型的定義.net

  格式:type 枚舉類型標識符 = (標識符1, 標識符2, ..., 標識符n)blog

2.枚舉類型數據特色字符串

  1)枚舉元素只能是標識符get

    例如,下面的定義是合法的it

type 
    days = (sun, mon, tue, wed, thu, fri, sat);
    colors= (red, yellow, blue, white, black, green);

    而下面的類型定義是錯誤的class

type
    colortype= ('red', 'yellow', 'blue', 'white');
    numbers= (1,3,4,5,6);

    定義枚舉類型的時候列出全部枚舉元素構成了這種枚舉類型的值域(取值範圍)變量

  2)枚舉類型屬於順序類型date

    根據定義類型時各枚舉類型的排列順序肯定他們的序號,且序號從0開始

    例如,定義

type 
    days=(sun,mon,tue,wed,thu,fri,sat);

    則,ord(sun)=0, ord(mon)=1,...,以此類推

    枚舉類型中的第一個元素無前驅,最有一個元素無後繼

  3)同一個枚舉元素不能出如今兩個或兩個以上的枚舉類型定義中。以下的定義是錯誤的

type
    color1 = (red, yellow, white);
    color2 = (blue, red, black);

    由於red屬於枚舉類型color1和枚舉類型color2

  4)枚舉類型變量只能進行賦值運算和關係運算,不能進行算術運算和邏輯運算

    在枚舉元素比較的時候,其實是對其序號的比較

    例如定義以下

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('reset');

    而下面的語句是不合法的

mon := 1;    //錯把枚舉值當成變量名
weekday := blue;     //枚舉值blue不屬於枚舉變量weekday的值域
read(color);    //枚舉類型變量不能用讀語句進行賦值

write(weekday);
writeln(blue);        //不能經過寫語句輸出枚舉類型的變量值和枚舉值

  5)能夠把變量的說明與類型的定義合併在一塊兒,好比

var
    hoilday, workday : (sun, mon, tue, wed, thu, fri, sat);
    color : (red, yellow, blue, white, black, green);

    對枚舉數據的輸入與輸出可經過間接方式進行。輸入時,通常可輸入一個代碼,經過程序進行轉換,輸出時,也只是打印出與枚舉元素相對應的字符串。這在後面會有實例展現

 

3.枚舉類型的應用

  例,輸入今天是星期幾的序號,輸出明天是星期幾的英文單詞(星期天序號爲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;
    endl
    
    if today=sat then
        tomorrow := sun
    else
        tomorrow := succ(today);    //succ()是求這個枚舉元素的後繼

    write('The tomorrow is ');
    case tomorrow of
        sun : writeln('sunday');
        mon : writeln('monday');
        tue : writeln('tuesday');
        wed : writeln('wednesday');
        thu : writeln('thursday');
        fri : writeln('friday');
        sat : writeln('saturday');
    end;
end.

  枚舉類型是一種有序類型,因此枚舉類型的變量能夠做爲循環變量。

  學習枚舉類型的時候,注意枚舉元素和變量的區別,以及枚舉與變量的輸入輸出方法的處理

相關文章
相關標籤/搜索