Определяет новую категорию переменной или процесса
unit
1 type Name = Existing type; 2 type Name = type Existing type; 3 type Name = (EnumValue1 [=value], EnumValue2 [=value] ...); 4 type Name = Expression1..Expression2; 5 type Name = ^Existing type; 6 type Name = array[...] of Existing type; 7 type Name = class ... end; 8 type Name = class of Existing class 9 type Name = dispinterface ... end; 10 type Name = file of Existing type; 11 type Name = function ...; 12 type Name = interface ... end; 13 type Name = object ... end; 14 type Name = procedure ...; 15 type Name = record ... end; 16 type Name = set of Ordinal values
Описание
Ключевое слово Type является фундаментальной частью Delphi. В отличие от других языков, оно позволяет создать новые категории (типы) переменной и процесса. На эти новоявленные категории можно сослаться так же, как если бы они были частью языка.
Например:
type TCourtCards = (Ace, Jack, Queen, King);
позволяет определить новую переменную этого "типа":
var Card : TCourtCard; Card := Queen;
Есть полезное соглашение - приставлять T к именам (Name) типов.
1.type Name = Existing type
Обращается к существующему типу, такому как string, но с новым Названием.
2.type Name = type Existing type
Это имеет тот же самый эффект, что и выше, но гарантирует, что во время выполнения, переменные этого типа будут идентифицированы по новому названию типа, а не существующим названием типа.
3.type Name = (EnumValue1, EnumValue2 ...)
Определяет перечисляемый тип, со значениями EnumValu1, EnumValue2 и так далее. Эти, определяемые пользователем названия, позволяют представлять всевозможные значения для перечислений.
Эти значения должны быть уникальными в вашей программе. После определения в типе, на них можно сослаться двумя способами: когда ссылаются/присваивают переменную этого типа, и как числовое значение, используя ключевое слово Ord. См. пример.
Обратите внимание, что эти перечисления имеют значения 0, 1, 2 и т.д. в зависимости от позиции на определении, если это значение не предписано указанным номером =value.
Например:
type Days = (Monday = 1, Tuesday, Wed ...);
где понедельник будет установлен в 1, вторник - 2, среда - 3 и так далее.
4.type Name = Expression1..Expression2
Здесь мы имеем диапазон целых чисел или символов от Expression1 до Expression2.
Expression1 и Expression2 - выражения, которые могут быть приведены к целому числу или символу.
Например:
type TAlphabet = 'A'..'z';
часто используется, чтобы определить диапазон символов от прописной A до строчной z.
5.type Name = ^Existing type
"^" - указатель на существующий тип. Он часто используется для перемещения через наборы записей.
6.type Name = array[...] of existing type
Структурированный тип, формирует массив типов как новый тип.
7.type Name = class ... end
Механизм для определения нового класса. См. ключевое слово Class.
8.type Name = class of existing class
Это обеспечивает определение мета класса. См. ключевое слово Class.
9.type Name = dispinterface ... end
См. ключевое слово Dispinterface.
10.type Name = file of Existing type
Определяет тип для обращения к файлу, который содержит записи данного существующего типа (по умолчанию, файлы обрабатываются как содержащие двоичные данные).
11.type Name = function ...
Определяет функцию как тип, позволяя функции быть определенной как параметр для подпрограммы.
12.type Name = interface ... end
Механизм для определения интерфейс. См. ключевое слово Interface.
13.type Name = object ... end
Устаревший эквивалент определения класса.
14.type Name = procedure ...
Определяет функцию как тип, позволяя функции быть определенной как параметр для подпрограммы.
15.type Name = record ... end
Формирует структуру данных под данным именем (Name). См. ключевое слово Record.
16.type Name = set of Ordinal values
Набор порядковых значений определяющих диапазон целых чисел или символов. См. ключевое слово Set.
Похожие команды
Array Тип данных содержащий индексируемую коллекцию данных
Type TString1 = string; // 1.
type Name = Existing type TString2 = type string; // 2. type Name = type
Existing type TTemp = (Hot, Warm, Cold); // 3. type Name = (Enum1, Enum2 ...) TExpr = 5*2 .. 6*3; // 4. type Name = Expr1 .. Expr2 // 5.
См. ключевое слово Pointer TArray = array[1..3] of byte; // 6. type Name = array[...] of type // 7.
См. код // 8.
См. ключевое слово Class // 9.
См. ключевое слово Dispinterface // 10.
См. ключевое слово File // 11.
См. ключевое слово Function // 12.
См. ключевое слово Interface // 13.
Устаревший // 14.
См. ключевое слово Procedure TRecord = record // 15. type Name = record .. end;
header : string;
value : Integer;
end; TLetters = set of 'A'..'z'; // 16. type Name = set of Ordinals
var // Объявление переменных,
использующих вышеупомянутые типы
firstName : TString1;
lastName : TString2;
temperature : TTemp;
expression : TExpr;
myArray : TArray;
myRecord : TRecord;
letters : TLetters;
begin // Присвоение значений этим
типам
firstName := 'Neil';
lastName := 'Moffatt';
temperature := Cold;
expression := 10;
myArray[1] := 5;
myRecord.header := 'data file';
letters := ['F'..'Q'];
end;