| Описание |  
Ключевое слово 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  Тип данных содержащий индексируемую коллекцию данных
  
Class  Начинает объявление типа объектного класса
  
Const  Начинает определение данных с установленными значениями
  
File  Определяет типизированный или нетипизированный файл
  
Function  Определяет подпрограмму, которая возвращает значение
  
Interface  Используется для внешних определений модуля, и как скелет класса
  
Object  Позволяет данным типа подпрограмм обращаться к методу объекта
  
Procedure  Определяет подпрограмму, которая не возвращает значение
  
Record  Структурный тип данных содержащий поля данных
  
Set  Определяет множество до 255 различных значений
  
Var  Начинает раздела определения переменных
  
 
  |    | 
  | 
| Пример кода : Примеры некоторых из этих типов |  
 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; 
 |  
Программа выполняется без вывода 
 |  
  |