Delphi. Урок 17. Типы

  • Автор темы HHIDE_DUMP
  • Дата начала
  • Просмотры 714
  • На форуме работает ручное одобрение пользователей. Это значит, что, если Ваша причина регистрации не соответствует тематике форума, а также Вы используете временную почту, Ваша учётная запись будет отклонена без возможности повторной регистрации. В дальнейшем - пожизненная блокировка обоих аккаунтов за создание мультиаккаунта.
  • Мы обновили Tor зеркало до v3!
    Для входа используйте следующий url: darkv3nw2...bzad.onion/
  • Мы вновь вернули telegram чат форуму, вступайте, общайтесь, задавайте любые вопросы как администрации, так и пользователям!
    Ссылка: https://t.me/chat_dark_time

HHIDE_DUMP

Гость
H

HHIDE_DUMP

Гость
Для того чтобы создать свой собственный тип переменной, необходимо сначала его объявить. В Delphi делается это внутри раздела type:

1 type
2 TForm1 = class(TForm)
3 procedure FormCreate(Sender: TObject);
4 private
5 { Private declarations }
6 public
7 { Public declarations }
8 end;

Внутри раздела type в стандартных проектах Delphi уже существует тип TForm1. Однако к рассмотрению подобных типов, которые также называются классами, мы перейдем в следующем уроке. В этом уроке мы научимся создавать более простые типы данных.

Простейший собственный тип данных
Для примера того, как нужно объявлять типы данных, давайте создадим самый простейший тип. Он будет представлять дубликат какого-либо другого типа. Укажем его сразу после объявления типа TForm1, т.е. после ключевого слова end, который указывает на завершение описания этого типа. Создается наш собственный тип вот таким образом:

1 TMyArray = array [1..100] of integer;
Т.е. в целом раздел type будет выглядеть следующим образом:

1 type
2 TForm1 = class(TForm)
3 procedure FormCreate(Sender: TObject);
4 private
5 { Private declarations }
6 end;
7 TMyArray = array [1..100] of integer;


Мы только что создали свой тип под названием TMyArray, который представляет собой обыкновенный массив сотни целочисленных переменных. Теперь, если мы захотим объявить какой-либо массив, мы можем не указывать эту длинную запись «array [1..100] of integer», а укажем «TMyArray»:

1 var
2 a: TMyArray;

Этот прием очень удобно использовать, когда требуется объявить одинаковый массив в нескольких участках кода, т.е. много раз. В качестве представляемого типа данных может выступать абсолютно любой тип. Будь то integer, double, string, array и т.п. Итак, мы рассмотрели простейший пример создания типа. Перейдем к более сложным примерам.

Записи
Записями record называют более сложные типы, которые могут включать в себя некоторое количество полей. Полями мы будем называть переменные, которые будут входить в состав записи. Создадим запись TBook, в которой опишем какие-либо характеристики, связанные с книгой:

1 type
2 TBook = record
3 Title, Author: string;
4 PagesCount: integer;
5 Price: integer;
6 end;

В данном случае Title, Author, PagesCount и Price являются полями типа TBook и описывают какие-то свойства, значения, которые характерны только для типа TBook. Т.е. по сути запись представляет собой совокупность нескольких переменных. Этот тип данных очень удобно использовать тогда, когда мы хотим как-то структурировать данные в нашем коде. Создание переменной TBook будет выглядеть также, как и создание переменной любого другого типа:

1 var
2 a: TBook;

И теперь мы можем обращаться к тем самым полям записи достаточно просто:

1 a.Title := 'Уроки Delphi для начинающих';
2 a.Author := 'zhk.su';
3 a.PagesCount := 1000;
4 a.Price := '100';

Т.е. мы сначала указываем имя переменной, затем ставим точку и указываем поле нашего типа. Работать с этими полями мы будем абсолютно также, как и с обычными переменными. Для примера мы можем создать тип TBooks, который будет описывать массив книг TBook:

1 type
2 TBooks = array [1..100] of TBook;

Тогда мы сможем обращаться к каждому полю отдельно взятой книги, например так:

1 var
2 Books: TBooks;
3 ...
4 for i := 1 to 100 do
5 Books.Title := 'Book #' + IntToStr(i); // Присвоим сотне книг имена

Поля записей также могут иметь абсолютно любой известный тип, но

Необходимо учитывать правильный порядок объявления типов. Если тип A используется при объявлении типом B, то тип A обязательно должен быть описан ДО описания типа B. В противном случае (т.е. если тип A будет указан после B в разделе type) компилятор скажет, что он не знает про тип A, который используется при объявлении типа B.

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


Перечисляемые типы
Перечисляемые типы достаточно просты. Они представляют собой типы таких переменных, которым могут быть присвоены только определенные значения. Например, объявим перечисляемый тип TOperatingSystem:

1 type
2 TOperatingSystem = (OSWindows, MacOS, Ubuntu, IOS, Android);

Теперь всем переменным типа TOperatingSystem могут быть присвоены только значения OSWindows, MacOS, Ubuntu, IOS и Android:

1 var MyOS: TOperatingSystem;
2 ...
3 MyOS := OSWindows;

Такие типы также могут являться полями записей, да и вообще:

Абсолютно любой тип может использоваться при описании другого типа. Исключение составляют только те типы, которые описаны после описания данного типа. Их в данном типе мы использовать не можем, т.к. их просто не увидит компилятор.
 

О нас

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

    Dark-Time 2015 - 2022

    При поддержке: XenForo.Info

Быстрая навигация

Меню пользователя