Множества в Delphi

Множества объявляются в разделе type с помощью конструкции set of. В сле­дующем примере объявляется множество TSetofchar типа набор символов char:

type

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, 'Среда'); // Удаляем среду

 

Функции работают быстрее и реализованы в одной машинной команде. Опера­торы сложения и вычитания при работе со множествами отнимают больше ресур­сов и используют больше команд.

dle

Помоги проекту! Расскажи друзьям об этом сайте: