解决方法
将枚举转换为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.