Выражение, представленное в следующем примере, возвращает True,
если переменная AnObject ссылается на образец объектного типа TMyClass или одного из его потомков.AnObject is
Сама по себе операция is не является операцией задания типа. В ней лишь проверяется совместимость объектных типов. Для корректного приведения типа объекта применяется операция as:
With
Возможен и такой способ приведения типа без явного указания
With
В программах перед операцией as
проверяют совместимость типов с помощью операции is. Если типы несовместимы, запускается обработчик исключительной ситуации EinvalidCast.Таким образом, в конструкции as операция явного приведения типа оказывается заключенной в безопасную оболочку:
If
with
else
raise
12. ОБЪЕКТНАЯ ССЫЛКА
Delphi
позволяет создать специальный описатель объектного типа (именно на тип, а не на экземпляр!), известный какОбъектные ссылки используются в следующих случаях:
— тип создаваемого объекта не известен на этапе компиляции;
— необходим вызов метода класса, чей тип не известен на этапе компиляции;
— в качестве правого операнда в операциях проверки и приведения типов с использованием
Объектная ссылка определяется с использованием конструкции
type
TMyObject = class
MyField: TMyObject;
constructor
end;
TObjectRef = class of
…
var
ObjectRef: TObjectRef;
s: string;
begin
ObjectRef:=TMyObject; {присваиваем тип, а не экземпляр!}
s:=ObjectRef.ClassName; {строка s содержит 'TMyObject'}
end;
Таким образом, в Delphi определена специальная ссылка
13. СТРУКТУРНАЯ ОБРАБОТКА ИСКЛЮЧИТЕЛЬНЫХ СИТУАЦИЙ
Под исключительной ситуацией
При традиционной обработке ошибок, ошибки, обнаруженные в процедуре, обычно передаются наружу (в вызывавшую процедуру) в виде возвращаемого значения функции, параметров или глобальных переменных (флагов). Каждая вызывающая процедура должна проверять результат вызова на наличие ошибки и выполнять соответствующие действия. Часто это просто выход в более верхнюю вызывающую процедуру и т. д.
Структурная обработка исключительных ситуаций — это программный механизм, позволяющий программисту при возникновении ошибки (исключительной ситуации —
Модель исключительных ситуаций в Object Pascal является не-возобновляемой
Для обработки исключительных ситуаций в язык Object Pascal добавлено новое ключевое слово
1) try..except;
2) try..finally.
Первый тип используется для обработки исключительных ситуаций. Его синтаксис:
try
Statement1;
Statement2;
…
except
on Exception1 do Statement;
on Exception2 do Statement;
…
else
Statements; {default exception-handler}
end;
Для уверенности в том, что ресурсы, занятые вашим приложением, освободятся в любом случае, можете использовать конструкцию второго типа. Код, расположенный в части
try
Statement1;
Statement2;
finally
Statements; {These statements always execute}