2015-12-28 14:25:15 +03:00
|
|
|
// Упаковка-распаковка размерных типов
|
2015-05-14 22:35:07 +03:00
|
|
|
var
|
|
|
|
|
i: integer := 2;
|
|
|
|
|
r: real := 3.14;
|
|
|
|
|
o: object;
|
|
|
|
|
|
|
|
|
|
begin
|
2015-12-28 14:25:15 +03:00
|
|
|
o := i; // Упаковка: объект размерного типа integer упаковывается в объект ссылочного типа,
|
|
|
|
|
// котрый и присваивается переменной o
|
|
|
|
|
// Преобразование типов при упаковке - неявное
|
|
|
|
|
writeln(integer(o)); // Распаковка: из упакованного объекта извлекается значение
|
|
|
|
|
// Преобразование типов при распаковке - явное
|
2015-05-14 22:35:07 +03:00
|
|
|
o := r;
|
|
|
|
|
writeln(real(o));
|
|
|
|
|
|
2015-12-28 14:25:15 +03:00
|
|
|
try // При неверном преобразовании типов генерируется исключение InvalidCastException
|
2015-05-14 22:35:07 +03:00
|
|
|
writeln(shortint(o));
|
|
|
|
|
except
|
|
|
|
|
on e: Exception do
|
|
|
|
|
writeln(e.GetType);
|
|
|
|
|
end;
|
|
|
|
|
end.
|