Оперативный контур "Задолженность контрагента "?

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Screw
Слесарь-системщик
Сообщения: 304
Зарегистрирован: 29 мар 2005, 17:49
Откуда: р.Беларусь, Унитарное предприятие "ТОП СОФТ"
Контактная информация:

Сообщение Screw »

Обращайте особо пристальное внимание на то, какого именно типа переменные вы используете, потому как ссылки на объектные интерфейсы и ссылки на vip-интерфейсы инициализируются по-разному.

Код: Выделить всё

var V: SomeVipInterface;
V.SomeMethod; 
В приведенном примере перед вызовом V.SomeMethod переменная V автоматически инициализируется ссылкой на разделяемую копию SomeVipInterface, затем отработает его метод SomeMethod. Явная же инициализация ссылок на vip-интерфейс выполняется с помощью вызовов GetVipInterface или LoadVipInterface - в зависимости от того, какая копия интерфейса требуется - разделяемая или индивидуальная, соответственно.

Объектные переменные инициализируются с помощью вызовов GetVipRef или LoadVipRef (возвращают ссылки на разделяемые или индивидуальные копии интерфейсов-реализаций, соответственно). А можно сделать то же самое по-другому:

Код: Выделить всё

var VS: ISomeInterface(SomeImplementation); // разделяемая копия
var VI: ISomeInterface(SomeImplementation) new; // индивидуальная копия
Это вкратце. Более подробную информацию о прогрессивных методах инициализации переменных-ссылок можно извлечь из документации по VIP (см. статью "Переменные типа ссылки" в разделе "Реализация объектов" документа "Описание языка VIP").
Виталий
Ответить