// Упаковка-распаковка размерных типов
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.