Множества объявляются в разделе type с помощью конструкции set of. В следующем примере объявляется множество TSetofchar типа набор символов char:
TSetOfChar = set of char;
Тип char — это число от 0 до 255, значит, наша переменная может принимать одно из этих значений.
Более интересный пример будет с часами:
type
TClockTypeEnum = (Digital, Analog);
TClockType = set of TClockTypeEnum;
В первой строке объявили переменную TClockTypeEnum— перечисление, в которой перечислено два типа часов. Во второй объявили набор TClockType. Теперь любая переменная типа TClockType будет принимать значения Digital, Analog. Другое значение в эту переменную записать нельзя.
Давайте научимся работать с множествами на реальном примере. Для этого представим, что нам надо хранить в какой-то переменной дни недели, когда было полнолуние. Объявление такого множества будет выглядеть следующим образом:
type
TDaysOfWeek = (Понедельник, Вторник, Среда, Четверг, Пятница, Суббота, Воскресенье);
TFullMoonDays = set of TDaysOfWeek;
В реальной программе нельзя будет использовать русские значения в множестве, но для данного примера использовались понятные нам названия дней недели.
Чтобы использовать это множество, мы должны объявить переменную такого типа, например MoonDays :TFuilMoondays.
А чтобы присвоить значение, мы должны указать его в квадратных скобках. В следующем примере заносится в такую переменную два дня — понедельник и четверг:
var
MoonDays: TFul lMoonDays ; begin
MoonDays := [Понедельник, Четверг]; end;
Чтобы проверить, находится ли какое-то значение в переменной, нужно использовать оператор in:
if Понедельник in moonDays then
Выполнить действие
Для добавления и удаления элементов из множества вы можете использовать операторы сложения и вычитания или функции include и Exclude. В следующем примере показаны различные варианты использования этих функций:
MoonDays := MoonDays + [Среда]; //Добавляем среду
MoonDays := MoonDays — [Понедельник, Четверг]; // Удаляем два дня
Include(MoonDays, 'Воскресенье'); //Добавляем воскресенье Exclude(MoonDays, 'Среда'); // Удаляем среду
Функции работают быстрее и реализованы в одной машинной команде. Операторы сложения и вычитания при работе со множествами отнимают больше ресурсов и используют больше команд.