文章

Delphi遍历枚举类型的坑

首先遍历枚举类型使用的是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.
原文来自:Delphi遍历枚举类型的坑,尊重自己,尊重每一个人;转发请注明来源!
0 0

发表评论