pascalabcnet/InstallerSamples/!MainFeatures/06_Classes/Boxing.pas

22 lines
983 B
ObjectPascal
Raw Permalink Normal View History

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