Читаем Технологии программирования полностью

Выражение, представленное в следующем примере, возвращает True, если переменная AnObject ссылается на образец объектного типа TMyClass или одного из его потомков.

AnObject is TmyClass

Сама по себе операция is не является операцией задания типа. В ней лишь проверяется совместимость объектных типов. Для корректного приведения типа объекта применяется операция as:

With AnObject as TmyClass do

Возможен и такой способ приведения типа без явного указания as.

With TMyClass(AnObject)do

В программах перед операцией as проверяют совместимость типов с помощью операции is. Если типы несовместимы, запускается обработчик исключительной ситуации EinvalidCast.

Таким образом, в конструкции as операция явного приведения типа оказывается заключенной в безопасную оболочку:

If AnObject is TobjectType then

with TobjectType(AnObject) do

else

raise EinvalidCast.Create('Неправильное приведение типа');

12. ОБЪЕКТНАЯ ССЫЛКА

Delphi позволяет создать специальный описатель объектного типа (именно на тип, а не на экземпляр!), известный как object reference — объектная ссылка.

Объектные ссылки используются в следующих случаях:

— тип создаваемого объекта не известен на этапе компиляции;

— необходим вызов метода класса, чей тип не известен на этапе компиляции;

— в качестве правого операнда в операциях проверки и приведения типов с использованием is и as.

Объектная ссылка определяется с использованием конструкции class of… Приведем пример объявления и использования class reference:

type

TMyObject = class (TObject)

MyField: TMyObject;

constructor Create;

end;

TObjectRef = class of TObject;

var

ObjectRef: TObjectRef;

s: string;

begin

ObjectRef:=TMyObject; {присваиваем тип, а не экземпляр!}

s:=ObjectRef.ClassName; {строка s содержит 'TMyObject'}

end;

Таким образом, в Delphi определена специальная ссылка TClass, совместимая по присваиванию с любым наследником TObject. Аналогично объявлены классы: TPersistentClass и ТСотроnentClass.

13. СТРУКТУРНАЯ ОБРАБОТКА ИСКЛЮЧИТЕЛЬНЫХ СИТУАЦИЙ

Под исключительной ситуацией (raise) здесь понимается ситуация, которая не позволяет без особых дополнительных мер продолжить выполнение программы, например деления на ноль, переполнения разрядной сетки, извлечения квадратного корня из отрицательного числа и т. д.

При традиционной обработке ошибок, ошибки, обнаруженные в процедуре, обычно передаются наружу (в вызывавшую процедуру) в виде возвращаемого значения функции, параметров или глобальных переменных (флагов). Каждая вызывающая процедура должна проверять результат вызова на наличие ошибки и выполнять соответствующие действия. Часто это просто выход в более верхнюю вызывающую процедуру и т. д.

Структурная обработка исключительных ситуаций — это программный механизм, позволяющий программисту при возникновении ошибки (исключительной ситуации — exception) связаться с кодом программы, подготовленным для обработки такой ошибки. В Delphi система называется структурной, поскольку обработка ошибок определяется областью "защищенного" кода. Такие области могут быть вложенными. Выполнение программы не может перейти на произвольный участок кода. Выполнение программы может перейти только на обработчик исключительной ситуации активной программы.

Модель исключительных ситуаций в Object Pascal является не-возобновляемой (non-resumable). При возникновении исключительной ситуации вы уже не сможете вернуться в точку, где она возникла, для продолжения выполнения программы (это позволяет сделать лишь возобновляемая (resumable) модель).

Для обработки исключительных ситуаций в язык Object Pascal добавлено новое ключевое слово "try", которое используется для обозначения первой части защищенного участка кода. Существуют два типа защищенных участков:

1) try..except;

2) try..finally.

Первый тип используется для обработки исключительных ситуаций. Его синтаксис:

try

Statement1;

Statement2;

except

on Exception1 do Statement;

on Exception2 do Statement;

else

Statements; {default exception-handler}

end;

Для уверенности в том, что ресурсы, занятые вашим приложением, освободятся в любом случае, можете использовать конструкцию второго типа. Код, расположенный в части finally, выполняется в любом случае, даже если возникает исключительная ситуация. Соответствующий синтаксис:

try

Statement1;

Statement2;

finally

Statements; {These statements always execute}

Перейти на страницу:

Похожие книги

Оптимизация BIOS. Полный справочник по всем параметрам BIOS и их настройкам
Оптимизация BIOS. Полный справочник по всем параметрам BIOS и их настройкам

Прочтя эту книгу, вы узнаете, что представляет собой BIOS, какие типы BIOS существуют, как получить доступ к BIOS и обновлять ее. Кроме того, в издании рассказано о неполадках в работе BIOS, которые приводят, например, к тому, что ваш компьютер не загружается, или к возникновению ошибок в BIOS. Что делать в этот случае? Как устранить проблему? В книге рассказывается об этом и даже приводится описание загрузки BIOS во флэш-память.Также вы научитесь использовать различные функции BIOS, узнаете, как оптимизировать их с целью улучшения производительности и надежности системы. Вы поймете, почему рекомендуемые установки являются оптимальными.После прочтения книги вы сможете оптимизировать BIOS не хуже профессионала!Книга предназначена для всех пользователей компьютера – как начинающих, которые хотят научиться правильно и грамотно настроить свою машину, используя возможности BIOS, так и профессионалов, для которых книга окажется полезным справочником по всему многообразию настроек BIOS. Перевод: А. Осипов

Адриан Вонг

Зарубежная компьютерная, околокомпьютерная литература / Программирование / Книги по IT
Первые шаги с Windows 7. Руководство для начинающих
Первые шаги с Windows 7. Руководство для начинающих

Просто и понятно для начинающих пользователей описана операционная система Windows 7 и ее новые возможности. Рассказано, как установить Windows 7 (в том числе на нетбук), как полностью использовать новые возможности графического интерфейса, как работать с файлами и стандартными программами. Отдельное внимание уделено вопросам работы в Интернете: настройке доступа, описанию популярных программ для работы в Интернете, обеспечению безопасности. Подробно рассмотрены мультимедиапрограммы Windows Media, Windows Media Center, DVD-студия Windows, прожиг CD/DVD средствами операционной системы. Даны практические рекомендации использования системы восстановления Windows 7, позволяющей в большинстве случаев обойтись без переустановки операционной системы в случае ее сбоя.Прилагаемый компакт-диск содержит видеокурс по основам работы в Windows 7.

Денис Николаевич Колисниченко , Денис Н. Колисниченко

Зарубежная компьютерная, околокомпьютерная литература / Прочая компьютерная литература / Книги по IT
Искусство обмана
Искусство обмана

Книга The Art of Deception – «Искусство обмана» – доказывает, насколько мы все уязвимы. В современном мире, где безопасность подчас выходит на первый план, на защиту компьютерных сетей и информации тратятся огромные деньги. Деньги тратятся на технологии безопасности. Эта книга объясняет, как просто бывает перехитрить всех защитников и обойти технологическую оборону, как работают социоинженеры и как отразить нападение с их стороны Кевин Митник и его соавтор, Бил Саймон рассказывают множество историй, которые раскрывают секреты социальной инженерии. Авторы дают практические советы по защите от атак, по обеспечению корпоративной безопасности и снижению информационной угрозы «Искусство обмана» не только демонстрирует, насколько опасна и вредоносна социоинженерия, но поможет разработать собственную программу тренинга по безопасности для сотрудников компании.

Вильям Л Саймон , Кевин Митник

Зарубежная компьютерная, околокомпьютерная литература