Читаем Учебник по Delphi 4.0 полностью

Множества

Файлы

Классы

Указатели на классы

Перечисленные типы сами по себе обычно являются не типами, а структурными методами дополнения существующих типов.

Записи

С помощью зарезервированного слова record (запись) в одном типе можно объединять данные разных типов. Общий синтаксис объявления этого типа выглядит следующим образом:

record

fieldnamel: fieldtypel;

fieldname2, fieldname3: fieldtype2;

case optional tagfield: required ordinal type of

1: variantnamel: varianttype3;

2, 3: variantname2: varianttype4;

end;

Данное объявление состоит из фиксированной и вариантной частей. Однако вовсе не обязательно вставлять в одно объявление записи обе эти части. Обычно удобнее работать с каждой из этих частей отдельно.

Фиксированные записи

В фиксированной части записи определяется одно или несколько независимых полей. Каждому полю обязательно присваивается имя и тип:

record

fieldnamel: fieldtypel;

fieldname2, fieldname3: fieldtype2;

end;

Имея доступ к информации в записи, можно обрабатывать всю запись целиком (все поля одновременно) или только отдельное поле. Для обращения к отдельному полю наберите имя записи, точку и идентификатор поля, например

MyRec.Fieldnamel

Для доступа ко всей записи просто укажите ее имя.

Совет: В языке С эквивалентом фиксированного типа record из Delphi является struct. В C++ также определен тип struct, синтаксис которого совместим с типом struct из С. Однако в C++ этот тип имеет дополнительные особенности, благодаря чему напоминает тип Class из Delphi.

Вариантные записи

Вариантная часть типа record дает возможность по-разному трактовать область памяти, совместно занимаемую вариантами поля:

record

case optional tagfield: required ordinal type of

1: variantnamel: varianttype3;

2, 3: variantname2: varianttype4;

end;

Совет: Термин вариантный в отношении записей не имеет ничего общего с типом Variant, который мы рассмотрим в следующем разделе данной главы. Вариантные поля, несмотря на свое название, никогда не имеют тип Variant. Объявление этого типа в любом месте вариантной части записи запрещено.

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

Каждый вариант обозначается минимум одной константой. Все константы должны быть порядковыми и совместимыми по типу с меткой поля.

Необязательное поле — это идентификатор дополнительного поля в фиксированной части записи, общий для всех вариантов. Обычно с его помощью определяют, когда к какому варианту обращаться.

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

Данные некоторых типов бессмысленно интерпретировать различным образом, и в Object Pascal на некоторые критические типы наложено соответствующее ограничение. Как следствие, в вариантную часть записи нельзя включать длинные строки и переменные типа Variant, а также структурные переменные, содержащие эти типы.

Совет: В С и C++ эквивалентом вариантному типу записи из Delphi является тип union.

Массивы

Массивы могут быть одно — или многомерными, как в следующем примере.

array [ordinaltype] of typedefinition;

array [ordinal typel, ordinal type2] of type definition;

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

Количество элементов массива равно произведению количеств элементов во всех измерениях.

Для обращения к элементу массива укажите имя этого массива и индекс элемента в квадратных скобках. Пусть, например, массив определен следующим образом:

var MyArray: Array [1..10] of Integer;

Тогда обращение к его третьему элементу будет выглядеть, как MyArray[З], и выполняться, как к переменной Integer.

Совет: Понятие массива существует в большинстве языков программирования, однако синтаксис, как правило, в каждом случае свой. В языках Basic и FORTRAN вместо квадратных скобок применяются круглые. В С и C++ элементы массива нумеруются с нуля, в FORTRAN — с единицы. В Basic нумерация начинается с нуля или единицы, в зависимости от результата последнего выполнения оператора OPTION BASE. В некоторых версиях Basic можно задавать верхнее и нижнее значения индексов, как это делается в Delphi. В С и C++ обращение к массиву эквивалентно обращению к его первому (нулевому) элементу. В Delphi это будет обращением ко всему массиву.

Множества

Перейти на страницу:

Похожие книги

C# 4.0: полное руководство
C# 4.0: полное руководство

В этом полном руководстве по C# 4.0 - языку программирования, разработанному специально для среды .NET, - детально рассмотрены все основные средства языка: типы данных, операторы, управляющие операторы, классы, интерфейсы, методы, делегаты, индексаторы, события, указатели, обобщения, коллекции, основные библиотеки классов, средства многопоточного программирования и директивы препроцессора. Подробно описаны новые возможности C#, в том числе PLINQ, библиотека TPL, динамический тип данных, а также именованные и необязательные аргументы. Это справочное пособие снабжено массой полезных советов авторитетного автора и сотнями примеров программ с комментариями, благодаря которым они становятся понятными любому читателю независимо от уровня его подготовки. Книга рассчитана на широкий круг читателей, интересующихся программированием на C#.Введите сюда краткую аннотацию

Герберт Шилдт

Программирование, программы, базы данных
C++: базовый курс
C++: базовый курс

В этой книге описаны все основные средства языка С++ - от элементарных понятий до супервозможностей. После рассмотрения основ программирования на C++ (переменных, операторов, инструкций управления, функций, классов и объектов) читатель освоит такие более сложные средства языка, как механизм обработки исключительных ситуаций (исключений), шаблоны, пространства имен, динамическая идентификация типов, стандартная библиотека шаблонов (STL), а также познакомится с расширенным набором ключевых слов, используемым в .NET-программировании. Автор справочника - общепризнанный авторитет в области программирования на языках C и C++, Java и C# - включил в текст своей книги и советы программистам, которые позволят повысить эффективность их работы. Книга рассчитана на широкий круг читателей, желающих изучить язык программирования С++.

Герберт Шилдт

Программирование, программы, базы данных