• Начинающий хакер, спасибо что зашёл к нам! Для полного удобства рекомендуем Вам сразу же зарегистрироваться. Помните, необходимо придумать сложный пароль к своему логину, в котором будут присутствовать цифры, а так же символы. После регистрации вы сможете пользоваться чатом. Так же не забудьте активировать аккаунт через письмо, высланное вам на почту ! Администрация заботится о каждом из Вас...
  • Для просмотра разделов из категории Private Informations & Programms необходимо купить

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

Статус
В этой теме нельзя размещать новые ответы.

AngelOfLove

Латентный кодер
Топовый

AngelOfLove

Латентный кодер
Топовый
Регистрация
21 Фев 2017
Сообщения
219
Реакции
74
Reputation
0
Баллы
3
Для того чтобы создать свой собственный тип переменной, необходимо сначала его объявить. В 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;

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

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