我有两个集合类型变量,我需要检查第一个是否是第二个的子集。
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;
示例代码在编译时给了我以下错误:
[DCC错误] Unit1.pas(36):E2010不兼容的类型:'TMyValues'和 'TMyValue'
是否有运算符或“嵌入式函数”来检查V1的值是否全部在V2中?
答案 0 :(得分:3)
设置运算符<=
允许检查V1是否是V2(reference to online help)的子集
if(V1 <= V2)...
请注意,空集是任何集的子集。
运算符in
应该检查集合中单个元素的外观,因此此处的用法不正确。