Приведение типов enum к Pointer
или TObject
и обратно работает просто отлично.Если ваша версия Delphi поддерживает дженерики, используйте предложение Тима, это лучше.В качестве альтернативы вы можете использовать динамический массив (array of 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.