首先遍历枚举类型使用的是GetEnumName,这个函数可以取得Name的值(非Value值),然后使用这个函数,在uses里面必须导入一个东西
这个东西名字叫做System.TypInfo,没错,就是这个东西,我是简直了,神名字.我一个劲的在排错,发现我写的是System.TypeInfo,我就说见鬼了,怎么就是使用不了,原来我写的Type,人家是要Typ,设计师真牛X,单词非要少一个字母.
枚举其实就是一堆的常量的集合.
program Project1;
{$APPTYPE CONSOLE}
{$R *.res}
uses
system.TypInfo, //导入TypInfo
System.SysUtils;
type
//定义两个枚举类型
Ecolors = (RED, GREEN, BLUE);
Eweeks = (MON = 1, TUE = 2, WED = 3, THU = 4, FRI = 5, SAT = 6, SUN = 7);
var
//声明变量 ,在使用的时候记得需要给声明的变量赋值.
Color: Ecolors;
Week: Eweeks;
EIndex: Integer;
EName: string;
Evalue: Integer;
begin
EIndex := 0;
//遍历枚举
for Color := Low(Ecolors) to High(Ecolors) do
begin
EName := GetEnumName(TypeInfo(Ecolors), EIndex); //Name值为遍历到的index索引值
Evalue:= GetEnumValue(TypeInfo(Ecolors), EName); //Value值为遍历到的Ename的索引,其实本例中的Value和EIndex是一样的值
Writeln(EName,'--',Evalue,'==',EIndex);
Inc(EIndex);
end;
Readln;
end.