日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網營銷解決方案
淺析枚舉的幾種類型

枚舉類型定義了一系列有序值的集合。枚舉變量就是從這個既定的集合中取某個值。集合中的有序值可以稱為元素,元素一般從0開始索引(也就是元素的順序號)。

  定義一個枚舉類型,采用以下的格式:

  type typeName = (val1, ..., valn)

  其中typeName和每一個val都必須是有效的標識符。

  VCL中有很多地方用到了枚舉類型,比如Object InspectorFormBorderStyles屬性就是,并且有一個下拉列表框選值,如下圖:

我們舉一個完整的例子來看看枚舉的類型的方方面面。

  1、新建一個Console Application。

  2、然后我們直接輸入下面的代碼吧,請仔細看注釋喲,如下:

 
 
 
 
  1.   program Project1;
  2.   {$APPTYPE CONSOLE}
  3.   uses
  4.   SysUtils;
  5.   { type中定義枚舉類型}
  6.   type
  7.   TSize = (Small = 5, Medium = 10, BeforLarge, Large = Small + Medium);
  8.   { TSize中因為Medium被索引為10,Small被索引為5,所以Large的索引為10 + 5 = 15}
  9.   TMyColor = (mcRed, mcBlue, mcGreen, mcYellow, mcOrange);
  10.   {mcRed = 0, mcBlue = 1, mcGreen = 2, mcYellow = 3, mcOrange = 4}
  11.   TAnswer = (ansYes, ansNo, ansMaybe = 1);
  12.   { ansMaybe 為 1, 那么ansYes = 0, ansNo = 1}
  13.   var
  14.   Size: TSize; { 聲明TSize枚舉類型的變量}
  15.   MyColor: TMyColor;
  16.   Answer: TAnswer;
  17.   MyCard: (Club, Diamond, Heart, Spade); { 也可以這樣直接聲明}
  18.   //Card1: (Club, Diamond, Heart, Spade);
  19.   { 此句編譯后導致錯誤,提示"Identifier redeclared"}
  20.   begin
  21.   Size := BeforLarge; { Ord(Size) = 11}
  22.   Writeln('BeforLarge在TSize中的索引為:' + IntToStr(Ord(Size)));
  23.   { 顯示11,因為Medium被索引為10,因此其后序索引為11}
  24.   Size := Large; { Ord(Size) = 15}
  25.   Writeln('Large在TSize中的索引為:' + IntToStr(Ord(Size))); { 顯示11}
  26.   Size := TSize(6); { Ord(Size) = 6}
  27.   Writeln('TSize(6)在TSize中的索引為:' + IntToStr(Ord(Size))); { 顯示6}
  28.   Inc(Size); { Ord(Size) = 7}
  29.   Writeln('Inc(Size)在TSize中的索引為:' + IntToStr(Ord(Size))); { 顯示7}
  30.   { 我們來看看TAnswer中元素的索引}
  31.   Answer := ansYes;
  32.   Writeln('ansYes在TAnswer中的索引為:' + IntToStr(Ord(Answer)));
  33.   Answer := ansNo;
  34.   Writeln('ansNo在TAnswer中的索引為:' + IntToStr(Ord(Answer)));
  35.   Answer := ansMaybe;
  36.   Writeln('ansMaybe在TAnswer中的索引為:' + IntToStr(Ord(Answer)));
  37.   { 因為ansNo和ansMaybe具有相同的索引值,所以兩個元素表現為相同值}
  38.   Readln;
  39.   end.

  3、運行,以檢驗結果,如下:

Note

  Enumerated constants without a specific value have RTTI(不指定元素的索引的枚舉類型可以生成運行時類型信息(RTTI))

  type SomeEnum = (e1, e2, e3);

  whereas enumerated constants with a specific value, such as the following, do not have RTTI:(指定了元素索引的枚舉類型將不可以生成運行時類型信息,如下所示)

  type SomeEnum = (e1 = 1, e2 = 2, e3 = 3);

  以上代碼均在Delphi7中測試通過。


網站題目:淺析枚舉的幾種類型
URL標題:http://m.5511xx.com/article/cdjdpdp.html