Упаковка и распаковка: различия между версиями
Материал из Вики проекта PascalABC.NET
Перейти к навигацииПерейти к поиску
Mikst (обсуждение | вклад) (Новая: == Ссылки == *Особенности языка: продвинутый уровень *[http://pascalabc.net/ru/bazovyie-osobennosti-yazyika-i-bibliotek.html Сайт PascalAB...) |
Mikst (обсуждение | вклад) Нет описания правки |
||
Строка 1: | Строка 1: | ||
Упаковка-распаковка размерных типов | |||
<source lang="Delphi">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.</source> | |||
== Ссылки == | == Ссылки == | ||
*[[Особенности языка: продвинутый уровень]] | *[[Особенности языка: продвинутый уровень]] | ||
*[http://pascalabc.net/ru/bazovyie-osobennosti-yazyika-i-bibliotek.html Сайт PascalABC.NET: Особенности языка] | *[http://pascalabc.net/ru/bazovyie-osobennosti-yazyika-i-bibliotek.html Сайт PascalABC.NET: Особенности языка] |
Версия от 21:59, 15 января 2010
Упаковка-распаковка размерных типов
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.