初始值随机
若定义一个枚举,他初始化是随机的,并不是第一个元素如:
所以若一个类包含了枚举类型,一定要给其赋值,否则就会乱套;
枚举不能为nil
枚举的零值 是随机 数字,值类型,不是对象类型;
定义时指定数字值
//在这个例子中,`cRed` 的值是 1,`cGreen` 的值是 2,`cBlue` 的值是 4。注意,这些值不必是连续的
TColor2 = (cRed = 1, cGreen = 2, cBlue = 4);
枚举与字符串互转
procedure TForm2.Button3Click(Sender: TObject);
var
od: Integer;
s: string;
cl: TColor;
begin
//获取元素的序号
cl := Red;
memo1.Lines.Add(IntToStr(Ord(cl))); //0
cl := Blue;
memo1.Lines.Add(IntToStr(Ord(cl))); //3
//枚举转字符串方式一(常用简单), uses System.TypInfo
memo1.Lines.Add(GetEnumName(TypeInfo(TColor), 2));//Green 知道枚举序号,一般不会使用这个
memo1.Lines.Add(GetEnumName(TypeInfo(TColor), Ord(Blue)));//Blue 一般使用这个
//枚举转字符串方式二(RTTI), uses System.Rtti
memo1.Lines.Add(TValue.From<TColor>(Blue).ToString);//Blue
//字符串转枚举,uses System.TypInfo
s := 'Blue';
od := GetEnumValue(TypeInfo(TColor), s); //3
memo1.Lines.Add(od.ToString);
cl := TColor(od);
case cl of
Red: memo1.Lines.Add('Red');
Yellow: memo1.Lines.Add('Yellow');
Green: memo1.Lines.Add('Green');
Blue: memo1.Lines.Add('Blue'); //Blue
end;
//即字符串转枚举是: EColors(GetEnumValue(TypeInfo(EColors), s));
end;
枚举遍历
for var enum := Low(TModelType) to High(TModelType) do
begin
memo2.Lines.Add(GetEnumName(TypeInfo(TModelType), Ord(enum))); //枚举字符串
end;
本文来自博客园,作者:del88,转载请注明原文链接:https://www.cnblogs.com/del88/p/18329842
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人