Разное
Облака / Clouds
The bast cloud service
Get 20 GB free!!!
Support WebDav.
Show more >>
time-tested cloud storage
Support WebDav.
Последние книги
Самое популярное
Все бесплатно
Все ссылки на файлы, расположенные на страницах сайта, добавлены пользователями и доступны для бесплатного скачивания. За содержание этих файлов администрация сайта ответственности не несет.
Навигация
Вопросы
Узнать используется ли файл другим приложением
Категория: Базы данных
Категория: Базы данных
Как поместить графический элемент в ListBox
Категория: Компоненты
Категория: Компоненты
Подсветить часть текста в DBGrid
Категория: Компоненты
Категория: Компоненты
Изменить структуру ABS (AbsoluteDB)
Категория: Базы данных
Категория: Базы данных
Поставить пароль на Paradox
Категория: Базы данных
Категория: Базы данных
Как можно проверить, запущена программа с локального диска или из сети
Категория: Интернет и Сети
Категория: Интернет и Сети
Объект экрана — Screen
Категория: Компоненты
Категория: Компоненты
Создать *.mdb-файл и таблицу в ней
Категория: Базы данных
Категория: Базы данных
Округление в большую сторону
Категория: Математика
Категория: Математика
Подсчет времени какого-либо события
Категория: Математика
Категория: Математика
Delphi - Справочник: Set
Set
|
1 type Name = Set of Ordinal type; 2 type Name = Set of Value range; |
Ключевое слово (Unit )
|
Определяет множество до 255 различных значений
|
Описание:
|
Ключевое слово Set объявляет тип множества до 255 дискретных значений. Не путайте с перечислениями - они могут принимать только одно значение. Переменная множества всегда держит все значения набора - некоторые установлены, некоторые нет. Перечислимый тип может быть: Символы типа "A" и "5" Целые числа в диапазоне от 0 до 255 Перечисления названий как Diamonds, Clubs Помните, что Set является переменной. Также, в начале все возможные значения не установлены. Когда вы инициализируете множество, вы можете установить все или некоторые из его значений. Потом вы можете проверить переменную, чтобы узнать, находится ли ее значение в наборе. Вы можете захотеть сделать это, например, при анализе кода, чтобы узнать, является ли следующий символ символом строчных букв. |
Пример кода: Пример
|
//Пример кода : Набор символов var Alphabet : Set of 'A'..'z'; // Набор букв begin Alphabet := ['A'..'z']; // Заполнение всех значений // Проверяем значения против набора алфавита if 'Z' in Alphabet then ShowMessage('Z в Alphabet') else ShowMessage('Z не в Alphabet'); if 'd' in Alphabet then ShowMessage('d в Alphabet') else ShowMessage('d не в Alphabet'); if '1' in Alphabet then ShowMessage('1 в Alphabet') else ShowMessage('1 не в Alphabet'); end; //Пример кода : Наборы положительных чисел var SmallNums : Set of 0..55; // Набор первых 56 членов набора LargeNums : Set of 200..255; // Набор последних 56 членов набора FullNums : Set of 0..255; // Набор всех 256 членов набора begin // Мы имеем диапазон значений от 0 до 55, которые мы можем установить // Обратите внимание на большую гибкость, которую мы имеем в установке значений // Мы можем определить множественные диапазоны, и индивидуальных членов SmallNums := [3..12,23,30..32]; // Заполнение значениями только некоторых из членов // Показ памяти, занятой этими наборами // Каждый член набора занимает один бит одного байта из 32 возможных байтов. ShowMessage('SmallNums занимают : '+IntToStr(SizeOf(SmallNums))+' байт'); ShowMessage('LargeNums занимают : '+IntToStr(SizeOf(LargeNums))+' байт'); ShowMessage('AllNums занимают : '+IntToStr(SizeOf(FullNums))+' байт'); // Проверяем значения против маленького набора чисел if 12 in SmallNums then ShowMessage('12 в SmallNums') else ShowMessage('12 не в SmallNums'); if 13 in SmallNums then ShowMessage('13 в SmallNums') else ShowMessage('13 не в SmallNums'); if 30 in SmallNums then ShowMessage('30 в SmallNums') else ShowMessage('30 не в SmallNums'); end; //Пример кода : Наборы перечисляемых значений определяемых пользователем type TNumber = (Ace, One, Two, Three, Four, Five, Siz, Seven, Eight, Nine, Ten, Jack, Queen, King); var CourtCards: Set of TNumber; // Масти карт CardNumbers : array[1..4] of TNumber; i : Integer; begin // Устанавливаем числа карт, чтобы позволить только карты с изображением CourtCards := [Ace, Jack, Queen, King]; // определение нескольких карт CardNumbers[1] := Ace; CardNumbers[2] := Four; CardNumbers[3] := Jack; CardNumbers[4] := Seven; // Показываем карты с изображением, которые мы имеем for i := 1 to 4 do if CardNumbers[i] in CourtCards then ShowMessage('Card '+IntToStr(i)+' масть карт'); end;
Результат:
|
Z в Alphabet d в Alphabet 1 не в Alphabet SmallNums занимают : 7 bytes LargeNums занимают : 7 bytes AllNums занимают : 32 bytes 12 в SmallNums 13 не в SmallNums 30 в SmallNumsv Card 1 масть карт Card 3 масть карт |
Примечание:
|
Каждый тип перечисления, или член набора, занимают один бит (32-байтовой) маски на 256 битов. Любой из этих 32 байтов, который не содержит ни один из битов определения перечисления, опущен из набора, чтобы экономить память. См. примеры. |