Типы данных в Delphi

До этого момента в программах использовались стандартные типы данных: 

  • integer
  • Real
  • Char
  • string 
  • Boolean

Вместе с тем, язык Delphi позволяет программисту определить свой собственный тип данных, а затем данные этого типа использовать в программе.

Объявляемый программистом новый тип данных базируется на стандартных типах или на типах, созданных программистом ранее. Тип, определенный программистом, может быть отнесен к:
  1.  перечисляемому;
  2.  интервальному;
  3.  составному типу данных (записи).

 

Перечисляемый тип

Определить перечисляемый тип — это значит перечислить все значения, которые может принимать переменная, относящаяся к данному типу. 

В общем виде объяатение перечисляемого типа выглядит так:

 

Тип =(Значение1, Значение2, ... ЗначениеN)

 

где:

  • тип — имя перечисляемого типа данных;
  • значениеi — символьная константа, определяющая одно из значений, которое может принимать переменная типа тип.

Примеры:


 

Согласно принятому в Delphi соглашению, имена типов должны начинаться с буквы Т

(от слова Tуре — тип)

 

После объявления типа можно объявить переменную, относящуюся к этому  

типу, например:  


Помимо указания значений, которые может принимать переменная, описание типа задает, как значения соотносятся друг с другом. Считается, что самый левый элемент списка значений является минимальным, а самый правый — максимальным. Для элементов типа DayOfWeek справедливо:
MON < TUE < WED < ТГО < FRI < SAT < SUN
Свойство упорядоченности элементов перечисляемого типа позволяет использовать переменные перечисляемого типа в управляющих инструкциях, например, так:

Приведенную инструкцию можно записать и так:

 
Очевидно, что программа, написанная с использованием объявленного программистом типа, более наглядна, легче читается и, следовательно, уменьшается вероятность появления ошибки.
Во время компиляции Delphi проверяет соответствие типа переменной типу выражения, которое присваивается переменной. Если тип выражения не может быть приведен к типу переменной, то выводится сообщение об ошибке.
 
Например, в фрагменте программы:
инструкция ThisDay : = 1,- ошибочна, т. к. переменная ThisDay принадлежит к определенному программистом перечисляемому типу TDayOfWeek, а константа, значение которой ей присваивается, принадлежит к целому типу (integer), В условии инструкции if тоже ошибка.
 
Можно утверждать, что объявление перечисляемого типа — это сокращенная форма записи объявления именованных констант.
Например, приведенное выше объявление типа TDayOfWeek равносильно следующему объявлению:
 

Интервальный тип

Интервальный тип является отрезком или частью другого типа, называемого базовым. В качестве базового обычно используют целый тип данных (integer).При объявлении интервального типа указываются нижняя и верхняя границы интервала, т. е. наименьшее и наибольшее значение, которое может принимать переменная объявляемого типа. 

 

В общем виде объявление интервального типа выглядит так:

Тип = Нижняяграница..ВерхняяГраница;

 

где:

  • Тип — имя объявляемого интервального типа данных;
  • нижняяграница — наименьшее значение, которое может принимать переменная объявляемого типа;
  • верхкяяГраница — наибольшее значение, которое может принимать переменная объявляемого типа.

Примеры:

TIndex = 0 ..100;

TRusChar = 'А' ..'я';

В объявлении интервального типа можно использовать именованные константы. В следующем примере в объявлении интервального типа Tindex использована именованная константа hbound:

const

HBOUND=100;
type
TIndex=1. .HBOUND;

Интервальный тип удобно использовать при объявлении массивов, например, так:


 

Помимо целого типа в качестве базового можно использовать перечисляемый тип, созданный программистом. В следующем фрагменте на основе типа TMonth объявлен интервальный тип Tsammer:


 

Запись

 

В практике программирования довольно часто приходится иметь дело сданными, которые естественным образом состоят из других данных. Например, сведения об учащемся содержат фамилию, имя, отчество, число,месяц и год рождения, домашний адрес и другие данные. Для представле-ния подобной информации в языке Delphiиспользуется структура, котораяносит название запись (record).

 

С одной стороны, запись можно рассматривать как единую структуру, а с другой — как набор отдельных элементов, компонентов. Характерной особенностью записи является то, что составляющие ее компоненты могут быть разного типа. Другая особенность записи состоит в том, что каждый компонент записи имеет имя. Итак, запись — это структура данных, состоящая из отдельных именованных компонентов разного типа, называемых полями. 


Объявление записи

Как любой тип, создаваемый программистом, тип "запись" должен быть объявлен в разделе type. В общем виде объявление типа "запись" выглядит так:


 

где:

  • имя — имя типа "запись";
  • record — зарезервированное слово языка Delphi, означающее, что далее следует объявление компонентов (полей) записи;
  • Поле_1 и Тип_1 — имя и тип i-го компонента (поля) записи, где i — 1, ..., k,
  • end — зарезервированное слово языка Delphi, означающее, что список полей закончен.

 Примеры объявлений:


После объявления типа записи можно объявить переменную-запись (или просто запись), например:

 

var
student : TPerson;
birthday : TDate;
Для того чтобы получить доступ к элементу (полю) переменной-записи (записи), нужно указать имя записи и имя поля, разделив их точкой, Например, инструкция

ShowMessage('Имя: ', student.f_name + #13 +'Адрес: ', student.address);

выводит на экран содержимое полей f_name (имя) и address (адрес) переменной-записи student.

Иногда тип переменной-записи объявляют непосредственно в разделе объявления переменных. В этом случае тип записи указывается сразу за именем переменной, через двоеточие.

Например, запись student может быть объявлена в разделе var следующим образом: 


Инструкция with

 

Инструкция with позволяет использовать в тексте программы имена полей без указания имени переменной-записи.

В общем виде инструкция with выглядит следующим образом:

with имя do

begin
{ инструкции программы }
end;

где:

  • имя — имя переменной-записи;
  • with — зарезервированное слово языка Delphi, означающее, что далее, до слова end, при обращении к полям записи имя, имя записи можно не указывать.

Например, если в программе объявлена запись

и данные о студенте находятся в полях Editi, Edit2 и Edits диалогового окна, то вместо инструкций


можно записать:


 

Ввод и вывод записей в файл

 

В практике программирования довольно часто приходится иметь дело с данными, которые естественным образом состоят из других данных. Например, сведения об учащемся содержат фамилию, имя, отчество, число, месяц и год рождения, домашний адрес и другие данные. Для представления подобной информации в языкеDelphiиспользуется структура, которая носит название запись (record).

Записи можно хранить в файле. Для того чтобы программа могла сохранить значение переменной-записи в файле или ввести его из файла, необходимо объявить файл, указав в качестве типа его компонентов тип "запись". Например, инструкции

 

объявляют файл, компонентами которого являются записи типа TPerson. Процесс работы с файлом записей практически ничем не отличается от процесса работы с обычным файлом. Сначала надо объявить файловую переменную и с помощью процедуры Assign связать эту переменную с конкретным файлом. Затем нужно открыть файл (для чтения, записи или обновления). После этого можно прочитать запись из файла или записать запись в файл.

dle

Помоги проекту! Расскажи друзьям об этом сайте: