Упаковка и распаковка

Материал из Вики проекта PascalABC.NET
Перейти к навигацииПерейти к поиску

Упаковка-распаковка размерных типов. Переменной типа Object можно присвоить любой размерный тип, при этом происходит его упаковка. Для обратного преобразования требуется явное приведение типа, которое называется распаковкой.

var 
  i: integer := 2;
  r: real := 3.14;
  o: object;

begin
  o := i; // Упаковка: объект размерного типа integer упаковывается в объект ссылочного типа, 
          // котрый и присваивается переменной o
          // Преобразование типов при упаковке - неявное
  writeln(integer(o)); // Распаковка: из упакованного объекта извлекается значение        
                       // Преобразование типов при распаковке - явное
  o := r;
  writeln(real(o));
  
  try // При неверном преобразовании типов генерируется исключение InvalidCastException
    writeln(shortint(o));
  except
    on e: Exception do
      writeln(e.GetType);
  end;
end.

Ссылки