gpt4 book ai didi

arrays - 在delphi中传递不同枚举类型的混合

转载 作者:行者123 更新时间:2023-12-03 15:04:09 25 4
gpt4 key购买 nike

我需要编写一个可以传递不同枚举选择的过程。

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,我可以选择?或者是一种不同的方法,我不明白?

最佳答案

认识帕斯卡的美丽。

以下是您可能想要执行的操作的示例:

program Project34; {$APPTYPE CONSOLE}

type
TEnum=(eOneFlagOne,eOneFlagTwo,eTwoFlagOne,eTwoFlagTwo);
TEnumSet=set of TEnum;

const
cEnumOne=[eOneFlagOne,eOneFlagTwo];
cEnumTwo=[eTwoFlagOne,eTwoFlagTwo];

procedure Process(const Enums: TEnumSEt);
var e:TEnum;
begin
for e in Enums do
WriteLn(ord(e));
end;

begin
Process([eOneFlagOne, eTwoFlagTwo]);
Process(cEnumOne);
Process(cEnumTwo);
end.

请注意,您也可以这样声明常量。也许这样更清楚:

const
cEnumOne:TEnumSet=[eOneFlagOne,eOneFlagTwo];
cEnumTwo:TEnumSet=[eTwoFlagOne,eTwoFlagTwo];

关于arrays - 在delphi中传递不同枚举类型的混合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11110704/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com