如果我将类型定义为 枚举类型,则使用[]创建空集很容易,但如何创建完整集?

编辑:是的,显而易见的解决方案是使用for循环。如果有另一种方式,这也是一个非常糟糕的解决方案。有没有人知道一种在恒定时间内工作的方式?

有帮助吗?

解决方案

Low()和High()是“编译魔术”。可以在编译时评估的函数。 这允许它们在如下的常量声明中使用:

var
  MySet : TBorderIcons;
  MySet2 : TBorderIcons;
const
  AllIcons : TBorderIcons = [Low(TBorderIcon)..High(TBorderIcon)];
begin
  MySet := [Low(TBorderIcon)..High(TBorderIcon)];
  MySet2 := AllIcons;
end;

其他提示

Per Barry的建议:

FillChar(VarSet, SizeOf(VarSet), $FF);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top