|
Учебник по 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.
|
|
|