Упаковка и распаковка
Материал из Вики проекта 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.