Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2012 02 26 Основы программирования в Delphi.docx
Скачиваний:
19
Добавлен:
16.08.2019
Размер:
204.56 Кб
Скачать

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

Синтаксис оператора record имеет вид

name = record

field_1 : data_type;

field_2 : data_type;

.

.

.

field_n : data_type;

end;

Оператор with

Оператор with применяется как к записям, так и к объектам. Здесь мы рассмотрим то как он используется вместе с записями. Выше мы написали код, заполняющий структуру записи данными:

CD.Number :=1;

CD.Title :=’Aftermath’;

CD.Artist :=’The Rolling Stones’;

CD.Year := 1986;

CD.Recorded:=’ABCKO Music and Records,Inc’;

CD.Price := 80;

CD.Market := ’Горбушка’;

С помощью оператора with этот код можно несколько упростить:

with CD do

begin

Number :=1;

Title :=’Aftermath’;

Artist :=’The Rolling Stones’;

Year := 1986;

Recorded:=’ABCKO Music and Records,Inc’;

Price := 80;

Market := ’Горбушка’;

end;

Оператор with присоединяет квалификатор (имя записи) по умолчанию к блоку кода. Все, что находится внутри begin – end рассматривается как собственность записи CD.

Массивы записей

В любой программе можно объявить массив записей аналогично объявлению массива данных целого или вещественного типов:

var

MyCDs : array [0..9] of TCDRecord;

begin

MyCDs[0].Number :=1;

MyCDs[0].Title :=’Aftermath’;

MyCDs[0].Artist :=’The Rolling Stones’;

MyCDs[0].Year := 1986;

MyCDs[0].Recorded:=’ABCKO Music and Records,Inc’;

MyCDs[0].Price := 80;

MyCDs[0].Market := ’Горбушка’;

MyCDs[1].Number := 2;

MyCDs[1].Title := ’Between the buttons’;

MyCDs[1].Artist := ’The Rolling Stones’;

MyCDs[2].Number := 3;

MyCDs[2].Title := ’Willage Green Preservation Society’;

MyCDs[2].Artist := ’The Kinks’;

Label1.Caption := MyCDs[2].Artist;

{ Продолжение . . . }

end;

Это выглядит чуть сложнее, чем в случае массива целого или вещественного типа. Так, индекс следует за именем массива MyCDs, а затем – точка и имя поля.

  1. Совместимость типов данных

Новый термин. Совместимость типов означает, что данные одного типа можно трактовать как данные другого типа. Тем самым, переменные (объекты) родственных типов, можно трактовать как переменные одного и того же общего типа. Принцип совместимости позволяет выполнять преобразование типа переменной. На английском языке это называется typecasting.

Ниже дан пример, показывающий как узнать цифровой код, соответствующий букве «А» латинского алфавита:

procedure TForm1.Button1Click(Sender: TObject);

var

AChar : Char;

AnInteger : Integer;

begin

AChar := 'A';

AnInteger := Integer(AChar);

Label1.Caption := IntToStr(AnInteger);

end;

В этом примере выражение Integer(AChar) есть указание компилятору преобразовать значение переменной AChar типа Char в значение типа Integer. Такое преобразование необходимо постольку поскольку мы не можем присвоить значение типа Char переменной целого типа. Если бы мы сделали такое присваивание, минуя операцию приведения типа, компилятор выдал бы сообщение «Incompatible types: 'Integer' and 'Char'».

Приведение типов, однако, возможно не всегда. Рассмотрим следующий код:

procedure TForm1.Button1Click(Sender: TObject);

var

Pi : Double;

AnInteger : Integer;

begin

Pi := 3.14;

AnInteger := Integer(Pi);

Label1.Caption := IntToStr(AnInteger);

end;

Здесь мы пытаемся трактовать данные типа Double как данные типа Integer. Это недопустимо. Компилятор выдаст сообщение «Invalid typecast». Для преобразования вещественного значения в целочисленное необходимо использовать функции Trunc, Floor, или Ceil.

ПРИМЕЧАНИЕ.

Функция Trunc возвращает целую часть вещественного числа

Функция Floor округляет вещественное до ближайшего целого снизу

Функция Ceil округляет вещественное до ближайшего целого сверху

Для преобразования типа указателя используется оператор as. (Указатели рассматриваются в следующем разделе, а использование оператора as объясняется ниже в разделе "Ключевые слова классов is и as."