微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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.

原文地址:https://www.jb51.cc/delphi/102307.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐