ВУЗ:
Составители:
Рубрика:
Когда приведение типов применяется к ссылке на переменную, ссылка на переменную рассматри-
вается как экземпляр типа, представленного идентификатором типа. Размер переменной (число байтов,
занимаемых переменной) должен быть равен размеру типа, представленного идентификатором типа.
После приведения типа переменной можно указать один или несколько квалификаторов, если это допуска-
ется указанным типом.
Приведем
несколько примеров приведения типов переменных:
type
ByteRec = record
Lo,Hi : Byte;
end;
WordRec = record
Low, High : Word;
end;
PtrRec = record
Ofs, Seg : Word;
end;
BytePtr = ^Byte;
var
B: Byte;
W: Word;
L: LongInt;
P: Pointer;
begin
W := $1234;
B := ByteRec(W).Lo;
ByteRec(W).Hi := 0;
L := $01234567;
W := WordRec(L).Lo;
B := ByteRec(WordRec(L).Lo).Hi;
B := BytePtr(L)^;
P := Ptr($40,$49);
W := PtrRec(P).Seg;
Inc(PtrRec(P).Ofs,4);
end;
Отметим использование типа ByteRec для доступа к байтам младшей и старшей части слова;
это соответствует встроенным функциям Lo и Hi, за исключением того, что приведение переменных мож-
но использовать также и в левой части оператора присваивания. Также обратите внимание на использова-
ние WordRec и PtrRec типов для доступа
к младшему и старшему слову части длинного целого, и к сегмент-
ной части и смещению в указателе.
Turbo Pascal полностью поддерживает приведение типов переменных, включая процедурные типы.
Например, для объявлений
type
Func = function(X : Integer) : Integer;
var
F: Func;
P: Pointer;
N: Integer;
можно написать следующие присваивания:
F := Func(P); {присвоить процедурное значение из Р в F}
Func(P) := F; {присвоить процедурное значение из F в P}
@F := P; {присвоить значение указателя
из Р в F}
Когда приведение типов применяется к ссылке на переменную, ссылка на переменную рассматри- вается как экземпляр типа, представленного идентификатором типа. Размер переменной (число байтов, занимаемых переменной) должен быть равен размеру типа, представленного идентификатором типа. После приведения типа переменной можно указать один или несколько квалификаторов, если это допуска- ется указанным типом. Приведем несколько примеров приведения типов переменных: type ByteRec = record Lo,Hi : Byte; end; WordRec = record Low, High : Word; end; PtrRec = record Ofs, Seg : Word; end; BytePtr = ^Byte; var B: Byte; W: Word; L: LongInt; P: Pointer; begin W := $1234; B := ByteRec(W).Lo; ByteRec(W).Hi := 0; L := $01234567; W := WordRec(L).Lo; B := ByteRec(WordRec(L).Lo).Hi; B := BytePtr(L)^; P := Ptr($40,$49); W := PtrRec(P).Seg; Inc(PtrRec(P).Ofs,4); end; Отметим использование типа ByteRec для доступа к байтам младшей и старшей части слова; это соответствует встроенным функциям Lo и Hi, за исключением того, что приведение переменных мож- но использовать также и в левой части оператора присваивания. Также обратите внимание на использова- ние WordRec и PtrRec типов для доступа к младшему и старшему слову части длинного целого, и к сегмент- ной части и смещению в указателе. Turbo Pascal полностью поддерживает приведение типов переменных, включая процедурные типы. Например, для объявлений type Func = function(X : Integer) : Integer; var F: Func; P: Pointer; N: Integer; можно написать следующие присваивания: F := Func(P); {присвоить процедурное значение из Р в F} Func(P) := F; {присвоить процедурное значение из F в P} @F := P; {присвоить значение указателя из Р в F}
Страницы
- « первая
- ‹ предыдущая
- …
- 5
- 6
- 7
- 8
- 9
- …
- следующая ›
- последняя »