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.
|
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;
|