Как получить дополнительные значения для переменной типа Delphi sets? - PullRequest
1 голос
/ 12 марта 2019

Начиная с переменной типа набора, такой как TAnchors:

  TAnchorKind = (akLeft, akTop, akRight, akBottom);
  TAnchors = set of TAnchorKind;

Я пытаюсь получить дополнительные значения.

var
  Tmp : TAnchors;
begin
  Tmp := [akLeft];
   ...
end;

Я ожидаю получить все значения TAnchors, которых нет в переменной Tmp.

Например, начиная с [akLeft], я ожидаю получить [akTop, akRight, akBottom].

Я пытался использовать оператор not, но, похоже, он не работает для Sets types.

1 Ответ

4 голосов
/ 12 марта 2019

Операторы набора перечислены в документации . Оператор not здесь не указан, поэтому его нельзя использовать на множестве. Тем не менее, вы ищете оператора разности, -. Возьмите разницу между набором, включающим всех участников, и вашим набором:

[Low(TAnchorKind)..High(TAnchorKind)] - Anchors
...