Program Project;
Uses
TypInfo, // 用于枚举类型反射
SysUtils;
Type
TColors = (Red, Blue, Green); // 符合Pascal命名规范的枚举类型
Var
Color1, Color2, Color3: TColors;
{ 演示正确的枚举遍历方式 }
Procedure demo1();
Begin
Color1 := TColors.Red;
Color2 := TColors.Blue;
Color3 := TColors.Green;
// 输出序数值验证
Writeln('Demo1序数值:');
Writeln(ord(Color1)); // 0
Writeln(ord(Color2)); // 1
Writeln(ord(Color3)); // 2
Writeln('----------');
// 正确遍历方式:直接使用枚举值的Ord值
Writeln('枚举值遍历:');
For Color1 := Low(TColors) To High(TColors) Do
Begin
// 关键改进:使用当前枚举值的Ord值作为索引
Writeln(GetEnumName(TypeInfo(TColors), Ord(Color1)));
Writeln(GetEnumValue(TypeInfo(TColors), GetEnumName(TypeInfo(TColors), Ord(Color1))));
End;
End;
Begin
demo1();
readln; // 保持控制台窗口打开
End.
02-25
3903

09-26
6303

04-19