我需要编写一个过程,可以传递不同的枚举选择。
type
TEnumOne = (eOneFlagOne, eOneFlagTwo);
TEnumTwo = (eTwoFlagOne, eTwoFlagTwo);
这个方法应该接受不同的枚举类型:
Process([eOneFlagOne, eTwoFlagTwo]);
我正在尝试这样实现:
// does not work!
procedure Process(const Enums: array of Variant);
var aValue; Variant
begin
for aValue in Enums do
begin
// of course, can't work...
if aValue is TEnumOne then
end;
end;
那么,除了Variant以外,我有没有可以选择的类型呢?或者有没有不同的方法,我没有看到呢?
I := Integer(eOneFlagOne);
和F := TEnumOne(I);
在这种情况下,如果eOneFlagOne = 0
,那么eTwoFlagOne = 0
。除非你还想要一个类似于0,1/2,3而不是0,1/0,1的唯一标识符,那我就不知道了。 - Jerry Dodgeconst E_ONE_FLAG_ONE = 0; E_ONE_FLAG_TWO = 1; E_TWO_FLAG_ONE = 2; E_TWO_FLAG_TWO = 3;
等等,而不是枚举。 - Jerry Dodge