Функция GetVipRef Назад В начало Вперед

Назначение

Функция GetVipRef загружает VIP-интерфейс, имя которого задано вторым параметром (если он не загружен), либо находит уже загруженную копию, и формирует ссылку на objInterface того типа, к которому принадлежит переменная типа ссылки.

Если VIP-интерфейс, заданный вторым параметром, реализует объектный интерфейс, являющийся типом ссылки первого параметра, то в первый параметр помещается ссылка на объектный интерфейс указанного VIP-интерфейса.

Функция GetVipRef, совместно с функцией GetVipInterface, ведет список загруженных внешних VIP-интерфейсов, и счетчик ссылок на каждый загруженный интерфейс. Требуемый интерфейс (имя которого передано функции в качестве второго параметра) ищется среди загруженных интерфейсов (загрузка по GetVipInterface или GetVipRef). Если интерфейс найден, то ему передается событие cmOnVipUse, увеличивается счетчик ссылок, и возвращается ссылка на загруженную копию. Если интерфейс в списке не найден - он загружается, вставляется в список, ему передаются события cmOnVipLoad и cmOnVipUse, и возвращается ссылка на требуемый объектный интерфейс загруженной копии.

Проверяется - соответствует ли переменная типа ссылки запрошенной операции. Это означает, что для функции GetVipRef

Первым параметром обязательно должна быть переменная типа ссылки на objInterface. Если это условие нарушено, то будет возбуждено исключение ExObjIfcBadVar.

Описание

function GetVipRef (var ref : VarOfInterFaceType;
					str : string
				 ) : boolean;

Параметры

ref - переменная типа ссылки на объектный интерфейс.

str - строковое выражения, задающее имя VIP-интерфейса.

Возвращаемое значение

Функция возвращает true, если VIP-интерфейс успешно найден или загружен, иначе false.

Если переменная была инициализирована до вызова функции, то происходит освобождение занятой ссылки.

Если в загружаемом интерфейсе в обработчике cmOnVipLoad выполнился Abort, функция возвращает false. При этом не возникает никаких исключений, а переменной присваивается NullRef.

Исключения:

Версия

Начиная с Атлантис 5.0.02.