Делфи язык программирования пример строго типизированного языка. Это означает, что все переменные должны быть некоторого типа. Тип - это, по сути, имя для вида данных. Когда мы объявляем переменную, мы должны указать ее тип, который определяет набор значений, которые может содержать переменная, и операции, которые могут быть над ней выполнены.
Многие из встроенных типов данных Delphi, такие как Integer или строка, могут быть уточнены или объединены для создания новых типов данных. В этой статье мы увидим, как создавать собственные порядковые типы данных в Delphi.
Порядковые типы
Определяющими характеристиками порядковых типов данных являются: они должны состоять из конечного числа элементов и должны быть каким-то образом упорядочены.
Наиболее распространенными примерами порядковых типов данных являются все типы Integer, а также Char и логический тип. Точнее, Object Pascal имеет 12 предопределенных порядковых типов: Integer, Shortint, Smallint, Longint, Byte, Word, Cardinal, Boolean, ByteBool, WordBool, LongBool и Char. Есть также два других класса пользовательских порядковых типов: перечислимые типы и типы поддиапазонов.
В любых порядковых типах имеет смысл переходить назад или вперед к следующему элементу. Например, реальные типы не являются порядковыми, потому что движение назад или вперед не имеет смысла. Вопрос "Что будет следующим реальным после 2.5?" бессмысленно.
Поскольку по определению каждое значение, кроме первого, имеет уникальный предшественник, а каждое значение, кроме последнего, имеет уникальный преемник, несколько предопределенных функции используются при работе с порядковыми типами:
функция | эффект |
Орд (X) | Дает индекс элемента |
Пред (X) | Переходит к элементу, указанному перед X в типе |
Сукц (X) | Переходит к элементу, указанному после X в типе |
Дек (х; п) | Перемещает n элементов назад (если n опущено, возвращает 1 элемент назад) |
Inc (X; п) | Перемещает n элементов вперед (если n пропущено, перемещается на 1 элемент вперед) |
Низкий (X) | Возвращает самое низкое значение в диапазоне порядкового типа данных X |
Высокий (X) | Возвращает самое высокое значение в диапазоне порядкового типа данных X |
Например, High (Byte) возвращает 255, поскольку наибольшее значение типа Byte равно 255, а Succ (2) возвращает 3, поскольку 3 является преемником 2.
Примечание: если мы попытаемся использовать Succ, когда на последнем элементе Delphi сгенерирует исключение во время выполнения если проверка диапазона включена.
Перечислимый тип Delphi
Самый простой способ создать новый пример порядкового типа - просто перечислить группу элементов в некотором порядке. Значения не имеют внутреннего значения, и их порядковый номер следует последовательности, в которой перечислены идентификаторы. Другими словами, перечисление - это список значений.
тип TWeekDays = (понедельник, вторник, среда, четверг, пятница, суббота, воскресенье);
Определив перечислимый тип данных, мы можем объявить переменные этого типа:
вар SomeDay: TWeekDays;
Основная цель перечислимого типа данных - прояснить, какие данные программа будет манипулировать. Перечислимый тип на самом деле является просто кратким способом назначения последовательных значений константам. Учитывая эти объявления, вторник является константой типа TWeekDays.
Delphi позволяет нам работать с элементами перечислимого типа, используя индекс, который идет в том порядке, в котором они были перечислены. В предыдущем примере понедельник в TWeekDays объявление типа имеет индекс 0, вторник - индекс 1 и т. д. Функции, перечисленные в таблице выше, позволяют нам, например, использовать Succ (пятница) для перехода в субботу.
Теперь мы можем попробовать что-то вроде:
за SomeDay: = понедельник в Воскресенье делатьесли SomeDay = вторник тогда ShowMessage («Вторник!»);
Библиотека визуальных компонентов Delphi во многих местах использует перечисляемые типы. Например, позиция формы определяется следующим образом:
TPosition = (poDesigned, poDefault, poDefaultPosOnly, poDefaultSizeOnly, poScreenCenter);
Мы используем Position (через инспектор объектов), чтобы получить или установить размер и расположение форма.
Типы поддиапазонов
Проще говоря, тип поддиапазона представляет собой подмножество значений другого порядкового типа. В общем, мы можем определить любой поддиапазон, начиная с любого порядкового типа (включая ранее определенный перечислимый тип) и используя двойную точку:
тип TWorkDays = понедельник.. пятница;
Здесь TWorkDays включает значения понедельник, вторник, среда, четверг и пятница.
Вот и все - теперь иди перечисляй!