Приведение типов используется для преобразования выражения одного типа в другой. Порядковые типы преобразуются друг в друга безо всяких ограничений. В остальных случаях приведение типов запрещено, только если различны объемы памяти, занимаемые переменными этих типов.
Например, нельзя преобразовать один в другой два типа записи, если первый содержит 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.