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

Например, нельзя преобразовать один в другой два типа записи, если первый содержит 3 поля типа Char, а второй - 2 поля типа Word. В то же время можно преобразовать запись с двумя байтовыми полями к типу Integer и тип Longint к типу Boolean.

Синтаксис приведения типа аналогичен вызову функции с одним параметром.

Приведение_типа::=

тип_результата "(" выражение_исходного_типа ")"

Например:

Вместо функции Ord можно использовать преобразование типа:

var a:word;

begin

a:=word('0');

writeln(a);

end.

Для доступа к младшему и старшему байтам значения типа Word можно воспользоваться следующим методом:

type

ByteRec = record {тип записи для получения доступа к байтам слова}

Lo,Hi : Byte;

end;

var

W: Word;

begin

W := $709;

writeln(ByteRec(W).Lo);

writeln(ByteRec(W).Hi);

readln;

end.

После запуска на экране появятся числа 9 (младший байт) и 7(старший байт). Аналогичного результата можно добиться следующей программой:

var W: Word;

p:^byte; {объявляем переменную - указатель на байт}

begin

p:=@w; {присваиваем указателю адрес слова}

W := $709;

writeln(p^); {выводим младший байт}

inc(longint(p)); {увеличиваем указатель, прибегая к преобразованию его в тип longint, так как процедура Inc ожидает передачи ей значения порядкового типа}

writeln(p^); {выводим старший байт}

readln;

end.

<- Предыдущая страница | Следующая страница ->

Последнее изменение: Вторник 1 Март 2011, 17:32