如何检查子集是否包含在集合中?

Fab*_*zio 3 delphi operators set delphi-2007

我有两个设置类型变量,我需要检查第一个变量是否是第二个变量的子集。

type
  TMyValue = (mvOne, mvTwo, mvThree);
  TMyValues = set of TMyValue;

...

var
  V1 : TMyValues;
  V2 : TMyValues;
begin
  V1 := [mvOne, mvTwo];
  V2 := [mvOne, mvTwo, mvThree];

  if(V1 in V2)
  then ShowMessage('V1 is a subset of V2')
  else ShowMessage('V2 is not a subset of V2');
end;
Run Code Online (Sandbox Code Playgroud)

示例代码在编译时出现以下错误:

[DCC 错误] Unit1.pas(36): E2010 不兼容的类型:“TMyValues”和“TMyValue”

是否有一个运算符或“嵌入函数”来检查 V1 的值是否都在 V2 中?

MBo*_*MBo 5

集合运算符<=允许检查V1是否是V2的子集(参考在线帮助

if(V1 <= V2)...
Run Code Online (Sandbox Code Playgroud)

请注意,空集是任何集合的子集。

运算符in应该检查集合中单个元素的外观,因此这里的用法是错误的。