Учебник по Delphi

Определение своих типов данных.

   Как и любой современный язык программирования высокого уровня, Delphi позволяет программисту определять собственные типы данных. Причем существует возможность сделать это несколькими способами.
Все определяемые типы задаются в разделе type. Можно добавлять типы, например, после описания формы или до него. Посмотрите на пример. Здесь тип Col описан до типа TForml, а тип d — после.

Листинг 4.1
type
// описание типа Со!
Col=record
х: Integer;
\/: Integer;
end;
// описание типа TForml - формы
TForml = class(TForm)
Button!: TButton;
Editl: TEdit;
Edit2: TEdit;
Edit3: TEdit;
procedure ButtonlCI ick(Sender: TObject);
private
{ Private declarations }
publ ic
{ Public declarations }
end;
// описание типа d
d=0..9;

   Таким образом, все равно, в каком порядке описаны типы. Можно даже сделать еще один раздел type, если вам так удобнее. Delphi допускает несколько разделов var И type.

Если это нужно для удобочитаемости программы, то можно для каждого типа указывать свое слово type.

Листинг 4,2
type Co 12=record
хх: Integer;
end;
type Col=record
х: Со12;
у: Integer;
end;

   Но нужно помнить, что если вы описываете тип, который использует другой тоже определяемый вами тип, то уже определенный тип, применяемый в создаваемом типе, должен располагаться выше (в тексте программы).

Тип-диапазон и перечисляемый тип

Тип-диапазон объявляется так:

type D = ' 1 ' . . ' 9 ' ;

Таким образом, мы получили тип о, переменным которого можно присваивать значения от единицы до девяти. Вот еще пример:

type Months=l..12;

   Полученный тип Months можно использовать, к примеру, для нумерации месяцев. Тогда будет сложнее сделать ошибку, так как Delphi при всем вашем желании не даст назначить номер месяца 13 или, допустим, 0. В переменных типа Months, который мы только что придумали, допустимы только значения от единицы до 12 и никакие другие!
Похожий на тип-диапазон перечисляемый тип описывается следующим образом:

type D=(monday,tuesday,Wednesday,thursday,friday,Saturday,Sunday);

В скобках через запятую перечислены все возможные значения переменных этого типа.

Записи и классы

   Очень удобными определяемыми типами являются записи. Если мы хотим хранить в одной переменной разнообразные данные (числовые, строковые и др.), то для этого как раз и нужно создать тип в виде новой записи.

Листинг 4.3
type
Card=record
number: Integer;
//номер карты
fio: String[220]; // фамилия владльца
age: Byte; // возраст владельца
salary: Integer; //зарплата
money: Int64; //деньги
end;

   Получился новый тип с именем Card. Можно объявить переменную типа Card и хранить в ней и номер карты, и фамилию, и возраст, и зарплату, и деньги — множество самых разнообразных данных. Использование записей удобно само по себе, чтобы все структурировать, а не вспоминать, к чему относится та или иная переменная. Записи также незаменимы при работе с файлами. Разновидностью записей являются классы. Они отличаются от записей тем, что в них можно описывать не только переменные, а еще и процедуры с функциями.

Примером определяемого класса является класс формы, который Delphi создает автоматически.

Листинг 4.4
type
TForml = class(TForm)
Buttonl; TButton;
Editl: TEdit;
Edit2: TEdit;
Edit3: TEdit;
procedure ButtonlCI ick(Sender: TObject);
private
{ Private declarations }
publ ic
{ Publ ic declarations }
end;

Разумеется, можно добавлять и свои классы. В классах и записях допускается использовать массивы. Массивы объявляются точно так же, как и в разделе var.

Листинг 4.5
type
Card=record
number: Integer;
// номер карты
fio: String[220]; // фамилия владельца
age: Byte; // возраст владельца
salary: Integer; //зарплата
money: Int64; //деньги
OtherC: array [1..10] of Integer; // номера других карт
end;

В данном случае в запись добавлен массив OtherC из 10 элементов типа Integer.




 

Рейтинг@Mail.ru          Rambler's Top100

X-ZiBiT