delphi – 存储枚举的列表类?

前端之家收集整理的这篇文章主要介绍了delphi – 存储枚举的列表类?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我应该用什么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.

猜你在找的Delphi相关文章