Выражение, представленное в следующем примере, возвращает True, если переменная AnObject ссылается на образец объектного типа TMyClass или одного из его потомков.
AnObject is TmyClass
Сама по себе операция is не является операцией задания типа. В ней лишь проверяется совместимость объектных типов. Для корректного приведения типа объекта применяется операция as:
With AnObject as TmyClass do…
Возможен и такой способ приведения типа без явного указания
With TMyClass(AnObject)do…
В программах перед операцией as проверяют совместимость типов с помощью операции is. Если типы несовместимы, запускается обработчик исключительной ситуации EinvalidCast.
Таким образом, в конструкции as операция явного приведения типа оказывается заключенной в безопасную оболочку:
If AnObject is TobjectType then
with TobjectType(AnObject) do …
else
raise EinvalidCast.Create('Неправильное приведение типа');
12. ОБЪЕКТНАЯ ССЫЛКА
Delphi позволяет создать специальный описатель объектного типа (именно на тип, а не на экземпляр!), известный как
Объектные ссылки используются в следующих случаях:
— тип создаваемого объекта не известен на этапе компиляции;
— необходим вызов метода класса, чей тип не известен на этапе компиляции;
— в качестве правого операнда в операциях проверки и приведения типов с использованием
Объектная ссылка определяется с использованием конструкции
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 определена специальная ссылка
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}
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии