我应该使用什么列表类型来存储枚举值?我尝试过使用 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.
关于delphi - 存储枚举的列表类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5894569/