Учебник по Delphi 4.0 - [8]
Физически строки с нуль-окончанием подобны массивам символов с нумерацией элементов от нуля, наподобие array [0. X] of char, где Х — некоторое положительное целое, большее нуля, хотя никаких объявлении подобного рода не происходит. Вместо этого определяется переменная-указатель P Char и распределяется необходимый объем памяти. При необходимости строке AnsiString можно присвоить тип P Char.
В табл. 1.7 перечислены некоторые процедуры и функции обработки данных строковых типов.
Совет: Программисты, работающие на С, привыкли записывать все строки в массивы с нуль-окончанием. Фактически они применяют в выражениях не строковые переменные, а указатели на них. Программисты, работающие на Basic, привыкли использовать строку как одно целое. Для типа AnsiString из Delphi годятся оба подхода.
На элементарном уровне наиболее полезными типами данных являются те, в которых содержится численная и строковая (символьная) информация. Объединив несколько образцов этих элементарных типов, можно создавать более сложные типы данных.
Структурные типы данных предоставляют возможность создавать новые типы, расширяя определения уже существующих таким образом, чтобы данные новых типов могли содержать более одного значения. Элементами данных структурных типов можно манипулировать как поодиночке, так и вместе, и эти элементы сами могут быть структурными. Никаких ограничений на подобное вложение одной структуры в другую не существует.
Ниже перечислены структурные типы, определенные в Delphi.
Записи
Массивы
Множества
Файлы
Классы
Указатели на классы
Перечисленные типы сами по себе обычно являются не типами, а структурными методами дополнения существующих типов.
Записи
С помощью зарезервированного слова 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;
Каждый массив содержит некоторое количество элементов информации одного типа. Для обращения к элементу массива надо указать имя массива и индекс элемента, заключенный в квадратные скобки. Обратите внимание, что число элементов массива в каждом измерении задается порядковым типом (ordina
![Галчонок](/build/oblozhka.dc6e36b8.jpg)
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
![Призраки ночи](/storage/book-covers/e7/e7a5dd3b4f1fa4b56d8de8bc4655a958722627e5.jpg)
В книге собраны предания и поверья о призраках ночи — колдунах и ведьмах, оборотнях и вампирах, один вид которых вызывал неподдельный страх, леденивший даже мужественное сердце.
![Закат вечности](/build/oblozhka.dc6e36b8.jpg)
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
![mmmavro.org | День 131, Победа](/build/oblozhka.dc6e36b8.jpg)
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
![Песнь о Нибелунгах](/storage/book-covers/37/37dc457a06c39999b5af8eb348cd1837a592eb4a.jpg)
…«Песнь о Нибелунгах» принадлежит к числу наиболее известных эпических произведений человечества. Она находится в кругу таких творений, как поэмы Гомера и «Песнь о Роланде», «Слово о полку Игореве» и «Божественная комедия» Данте — если оставаться в пределе европейских литератур…В. Г. Адмони.
![mmmavro.org | День 132, Поэт](/build/oblozhka.dc6e36b8.jpg)
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
![История Новосибирской области. Часть 2](/storage/book-covers/c3/c3ed852d73c29eb40391f0c9faad8d364ef40add.jpg)
Учебное пособие по истории Новосибирской области для учащихся 9-10 классов школ Новосибирской области. Издание 1977 г. Охватывает период с начала XX века до середины 70-х гг. XX века. Соответствует школьной программе по истории СССР. Содержит фактические и цифровые данные, характеризующие развитие области в период социализма. В книге используются таблицы и CSS, поэтому для чтения лучше использовать программу Cool Reader3. Для пользующихся другими программами, таблицы дублируются в графическом формате.
![Аквариум в школе](/storage/book-covers/e3/e3038d8660feef3b3b2639a110cbd6a2c24e4f0f.jpg)
В книге даны рекомендации по использованию аквариума как наглядного пособия при изучении биологии в объеме, предусмотренном школьной программой и во внеклассной работе. Рассмотрены проблемы организация аквариумов разных вариантов в школе. Большое внимание уделено проведению экскурсий с целью знакомства с водной фауной и сбора объектов для аквариумов. В связи с этим авторы подробно останавливаются на правилах поведения и изъятия животных и растений из водоемов, руководствуясь законодательством СССР. Книга написана для учителей биологии средней школы.
![Половая идентификация ребенка в кинетическом рисунке семьи](/storage/book-covers/ac/ac5b2cf435e320c2b679b133d70201eb0101d253.jpg)
Здоровые семейные отношения – это залог успешной полоролевой идентификации ребёнка. Начинаясь с рождения, процесс идентификации протекает непрерывно, с заострениями и актуализациями переживаний на кризисных этапах психосексуального развития. Одним из таких этапов является возраст эдипова комплекса. Конфликты и искажения воспитательного процесса на этом этапе никогда не проходят бесследно и могут с новой силой реанимироваться уже в подростковом возрасте. В пособии представлены основные критерии анализа и подходы к пониманию проблем половой идентификации ребёнка с помощью популярной рисуночной методики.
![Искусство Древней Греции и Рима: учебно-методическое пособие](/storage/book-covers/4c/4c3785b8496557e93de940ff04a8fc6d39db6429.jpg)
Предлагаемое методическое пособие рассчитано на студентов 1 курса всех форм обучения: очной (дневной, вечерней), при которой студенты слушают полный курс лекций по всем заявленным в пособии темам, и заочной, при которой студенты слушают краткий курс лекций и занимаются самостоятельной подготовкой к экзаменам и зачетам. Пособие содержит изложенную в краткой форме программу занятий, подробный тематический план-конспект по тридцати двум темам изучаемым в течение семестра, список рекомендованной к курсу лекций литературы, вопросы к экзаменам, темы рефератов, семинарских занятий, а также приблизительные темы дипломных и курсовых работ.
![Самоучитель Adobe After Effects 6.0](/storage/book-covers/84/8493a01f3f2ad533f801532092a350699300772b.jpg)
Обучение созданию профессиональных видеофильмов и обработки их на компьютере представлено в виде 12 уроков. Рассматривается, как с помощью программы Adobe After Effects можно редактировать и рисовать последовательность кадров, добавлять титры и заголовки, применять различные видеоэффекты, редактировать звуковое сопровождение фильма. Описывается процесс настройки прозрачности и наложения слоев видео для последующего экспорта фильма в различных форматах. Показываются способы создания анимации при масштабировании, поворотах и в движении с наложением титров и спецэффектов.
![История русской литературы XX века (20–90–е годы). Основные имена](/storage/book-covers/d8/d860f2d60662468b2d09f1006035d88ecc81bdcf.jpg)
Книга является пособием по истории русской литературы XX века (20-90-е годы). Она представляет собой первый том, за которым последует продолжение — «Литературный процесс» (в двух частях). Пособие призвано отразить современный научный взгляд на основные художественные ценности и тенденции развития русской литературы XX века.Издание предназначено для студентов филологических факультетов российских университетов, а также для аспирантов и преподавателей, — всех, кто занимается русской литературой.