Использование оператора as

Объекты, поддерживающие интерфейсы, могут использовать оператор as для динамического присоединения интерфейса. Например,

procedurePaintObjects(P: TInterfacedObject) 
var
X: IPaint; begin
X := P as IPaint; {операторы} end;

В данном примере переменная Р имеет тип TInterfacedObject. Данная переменная может быть назначена переменной X, как ссылка на интерфейс IPaint. Для данного назначения компилятор генерирует код для вызова метода QueryIntetface, относящегося к интерфейсу IUnknown переменной P. Такое назначение возможно, даже если Р не поддерживает данный интерфейс. То есть компилятор не выдаст ошибку при таком назначении.

Во время выполнения вышеприведенного примера либо успешно происходит присваивание

Х:= Р as IPaint;

либо генерируется исключительная ситуация.

При использовании оператора as вы должны выполнять следующие требования:

Hosted by uCoz