Вы можете создать set
.
В следующем примере набор инициализируется пунктами item1
и item4
.
После этого добавляется item5
.
Он показывает, есть ли item5 в наборе, до и после добавления, поэтому вы получите следующий вывод:
FALSE
TRUE
Пример:
program Project1;
{$APPTYPE CONSOLE}
uses SysUtils;
type
TMyType = (Item1, Item2, Item3, Item4, Item5,Item6);
const
cItems1And4 : set of TMyType = [Item1,Item4];
var
MyItems:set of TMyType;
begin
MyItems := cItems1And4;
WriteLn(Item5 in MyItems);
Include(MyItems,Item5);
WriteLn(Item5 in MyItems);
ReadLn;
end.
...
Я хотел напечатать следующее в качестве комментария к ответу Andreases, но система комментариев не позволяет мне правильно форматировать материал ..
Если вы не застряли в древнем Delphi, возможно, это лучшая идея:
TComputerType = record
const
Desktop = 0;
Server = 1;
Netbook = 2;
Tabled = 3;
end;
Это гарантирует, что вы не загрязняете свое пространство имен, и вы будете использовать его, как если бы это было enumed enum:
TComputerType.Netbook
В настоящее время я обычно так делаю ... Вы даже можете создать там несколько удобных вспомогательных функций или свойств, например, для преобразования строк в строки и обратно.