Delphi-Help

  • Increase font size
  • Default font size
  • Decrease font size

Type

Печать
Рейтинг пользователей: / 2
ХудшийЛучший 

Type

Описание

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;

Программа выполняется без вывода

Примечание

 

 

Авторизация



Счетчики