Приведение типов переменных

 

При приведении типа переменной размер переменной должен быть равен размеру типа, к которому она приводится.

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

Операцию приведения типа переменной можно использовать как в правой, так и в левой части оператора присваивания в качестве фактического параметра подпрограммы.

Пример 1.

type t_season=(Winter, Spring, Summer, Autumn);

t_vect=array[1..2] of word;

var p:pointer; s:t_season;

begin write(‘Введите сезон: 0 - зима, 1 - весна, 2 - лето, 3 - осень’);

read(byte(s));

getmem(p,1);

write(‘Сегмент: ’, t_vect(p)[2], ’; смещение:’, t_vect(p)[1]);

end.

 

Обработка одномерных массивов разных размеров с фиксированным базовым типом

 

Для обработки одномерных массивов с разными типами индексов, но с одним и тем же базовым типом, можно описывать подпрограммы, которым передается массив, как параметр-открытый массив. В таких подпрограммах параметр-массив приводится к типу массив с тем же базовым типом, но с типом индекса 0... n -1, где n - размер массива. Максимальное значение индекса элемента массива а, передаваемого как открытый массив, в подпрограмме возвращает функция High(а).

Пример 2. Описание процедуры ввода вещественного массива a:

Procedure read_vect(var a:array of real);

var i:word;

begin for i:=0 to High(а). do

read(a[i])

end;