Понимание и использование типов данных записей в Delphi

наборы ОК, массивы отлично.

Предположим, мы хотим создать три одномерных массива для 50 участников в нашем сообществе программистов. Первый массив предназначен для имен, второй - для электронной почты, а третий - для количества загрузок (компонентов или приложений) в наше сообщество.

Каждый массив (список) будет иметь соответствующие индексы и множество кода, чтобы поддерживать все три списка параллельно. Конечно, мы могли бы попробовать с одним трехмерным массивом, но как насчет его типа? Нам нужна строка для имен и адресов электронной почты, но целое число для количества загрузок.

Способ работы с такой структурой данных заключается в использовании Delphi's. структура записи.

TMember = запись...

Например, следующее объявление создает тип записи с именем TMember, который мы могли бы использовать в нашем случае.

По сути, структура данных записи может смешивать любые встроенные типы Delphi включая любые типы, которые вы создали. Типы записей определяют фиксированные коллекции элементов разных типов. Каждый элемент или поле, как переменная, состоящая из имени и типа.

instagram viewer

Тип TMember содержит три поля: строковое значение с именем Name (для хранения имени члена), значение строкового типа называется электронной почтой (для одной электронной почты), а целое число (кардинал) называется сообщениями (для хранения количества представлений на наш сообщества).

После того, как мы установили тип записи, мы можем объявить переменную типа TMember. TMember теперь такой же хороший тип переменных для переменных, как и любой из Delphi»Встроенные типы, такие как String или Integer. Примечание: объявление типа TMember не выделяет никакой памяти для полей Name, eMail и Posts;

Чтобы фактически создать экземпляр записи TMember, мы должны объявить переменную типа TMember, как показано в следующем коде:

Теперь, когда у нас есть запись, мы используем точку, чтобы изолировать поля DelphiGuide.

Примечание: приведенный выше фрагмент кода может быть переписан с использованием сключевое слово.

Теперь мы можем скопировать значения полей DelphiGuide в AMember.

Область записи и видимость

Тип записи, объявленный в объявлении формы (секции реализации), функции или процедуры, имеет область действия, ограниченную блоком, в котором он объявлен. Если запись объявлена ​​в разделе интерфейса модуля, она имеет область действия, которая включает любые другие модули или программы, использующие модуль, в котором происходит объявление.

Массив записей

Поскольку TMember действует как любой другой тип Object Pascal, мы можем объявить массив переменных записи:

Примечание: вот как объявить и инициализировать постоянный массив записей в Delphi.

Записи как поля записей

Поскольку тип записи является допустимым, как и любой другой тип Delphi, мы можем иметь поле записи, которое будет самой записью. Например, мы могли бы создать ExpandedMember для отслеживания того, что член отправляет вместе с информацией об участнике.

Заполнить всю информацию, необходимую для отдельной записи, теперь немного сложнее. Для доступа к полям TExpandedMember требуется больше периодов (точек).

Запись с "неизвестными" полями

Тип записи может иметь вариантную часть (не путать с переменной типа Variant). Записи с вариантами используются, например, когда мы хотим создать тип записи с полями для различные виды данных, но мы знаем, что нам никогда не понадобится использовать все поля в одной записи экземпляр. Чтобы узнать больше о частях Variant в записях, взгляните на файлы справки Delphi. Использование варианта типа записи небезопасно и не является рекомендуемой практикой программирования, особенно для начинающих.

Тем не менее, вариант записи может быть весьма полезным, если вы когда-нибудь окажетесь в ситуации, чтобы использовать их.

instagram story viewer