delphi – 存储枚举的列表类?
发布时间:2020-12-15 04:01:42 所属栏目:大数据 来源:网络整理
导读:我应该用什么List类型来存储枚举值?我已尝试使用TObjectList,我强制转换为TObject以添加值,但在从列表中读取时无法将其强制转换为枚举. 你用什么列表来存储枚举? 解决方法 将枚举转换为Pointer或TObject并返回工作正常.如果您的Delphi版本支持泛型使用Tim
我应该用什么List类型来存储枚举值?我已尝试使用TObjectList,我强制转换为TObject以添加值,但在从列表中读取时无法将其强制转换为枚举.
你用什么列表来存储枚举? 解决方法
将枚举转换为Pointer或TObject并返回工作正常.如果您的Delphi版本支持泛型使用Tim的建议,那就更好了.或者,您可以使用动态数组(TTestEnum数组)或围绕动态数组创建包装类 – 这就是如何在具有泛型的Delphi版本中实现泛型列表.
这是一个使用TList而不是TObjectList的快速控制台演示,因为TList对它所拥有的项目做出的假设更少. program Project1; {$APPTYPE CONSOLE} uses SysUtils,Classes; type TTestEnum = (enum1,enum2,enum3,enum4); var L: TList; i: Integer; E: TTestEnum; begin L := TList.Create; try L.Add(Pointer(enum1)); L.Add(Pointer(enum2)); L.Add(Pointer(enum3)); L.Add(Pointer(enum4)); for i:=0 to L.Count-1 do begin E := TTestEnum(L[i]); case E of enum1: WriteLn('enum1'); enum2: WriteLn('enum2'); enum3: WriteLn('enum3'); enum4: WriteLn('enum4'); end; end; finally L.Free; end; ReadLn; end. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |