Информатика на пять О нас
 Добавить в избранное
5byte.ru
 Теория
 8 класс
 9 класс
 10 класс
 11 класс
Задания
 8 класс
 9 класс
 10 класс
 11 класс
Книги
Тесты
ЕГЭ
Turbo Pascal 7
 Описание
 Задачи
HTML
Рефераты

9.4. Преобразование типов

В раде случаев требуется преобразовать переменную одного типа в переменную другого типа. В Turbo Pascal такое преобразование осуществляется сравнительно просто, если переменные обоих типов имеют один и тот же размер. Для этого следует указать идентификатор типа, а за ним в круглых скобках переменную исходного типа. Если новый тип - структурированный, можно в случае необходимости выбрать компоненту в соответствии с общими правилами.

Пример.

type  
  ByteRec = record  
    Lo, Hi: Byte  
  end;  
  WordRec = record  
    Low, High: Word  
  end;  
  PtrRec = record  
    Ofs, Seg: Word  
  end;  
  BytePtr = ^Byte;  
var  
  В: Byte;  
  W: Word;  
  L: Longint;  
P: Pointer;  
begin  
  W := $1234; {присвоение переменной W значения}
  В := ByteRec(W).Lo; {преобразование переменной типа Word в запись из двух байтов и выделение младшего байта}
  ByteRec(W).Hi := 0; {преобразование переменной типа Word в запись из двух байтов и запись в старший байт значения 0}
  L := $01234567; {присвоение переменной L значения}
  W := WordRec(L).Low; {преобразование переменной типа Longint в запись из двух слов и выделение младшего слова}
  В := ByteRec(WordRec(L).Low).Hi; {преобразование переменной типа Longint в запись из двух слов, выделение младшего слова, преобразование его в запись из двух байтов и выделение старшего байта}
  В := BytePtr(L)^; {преобразование переменной типа Longint в указатель и получение значения параметра, на который он указывает}
  Р :=Ptr ($40,$49); {Присвоение указателю Р значения с помощью стандартной функции Ptr}
  W := PtrRec(P).Seg; {преобразование указателя в запись из двух слов и выделение второго слова (фактически адреса сегмента)}
  Inc(PtrRec(P).Ofs, 4); {преобразование указателя в запись из двух слов, выделение первого слова (фактически смещения адреса) и увеличение его величины на 4 с помощью стандартной процедуры Inc}
end;  

Такое преобразование возможно не только, когда исходный и окончательный типы имеют одинаковый размер. Оно возможно также в случае преобразования друг в друга двух порядковых типов (см. п. 3.2), независимо от их размера, а также преобразования параметра без типа (см. п. 10.3.4).





 У Вас есть материал пишите нам
 
    Copyright © 2008    
  Top.Mail.Ru