EnglishРусский  

   Приложение

Реклама

Инсталлятор CreateInstall
Бесплатные и коммерческие инсталляторы

Операция позднего связывания

Оператор ~ применяется для позднего связывания. Данный оператор во многом схож с использованием "точки" . - взятия поля или вызова метода, отличие состоит в том, что иногда на момент компиляции невозможно определить все возможные поля и методы объекта, а во время выполнения программы вызывается специальный метод объекта, которому передается имя поля/метода, типы и значения параметров. Технология позднего связывания часто применяется при работе с COM объектами.

Левым операндом операции ~ является идентификатор объекта, этот объект должен поддерживать позднее связывание, правым операндом является имя поля/метода, с которым необходимо связаться, например excapp~Visible - если необходимо получить/установить свойство или excapp~Cells(3,2), если необходимо вызвать какой-то метод.

Объект может поддерживать следующие возможности позднего связывания:

  • простой вызов метода excapp~Quit, с параметрами или без;
  • установка значения excapp~Cells( 3, 2 ) = "Hello World!";
  • получение значения vis = uint( excapp~Visible );
  • цепочка вызовов excapp~WorkBooks~Add, это равнозначно следующей записи
    tmpobj = excapp~WorkBooks
    tmpobj~Add

Недостатком использования отложенных вызовов является, то что компилятор не может проверить правильность написания полей/методов и соответствие типов, что создает сложности при отладке.

Пример использования отложенных вызовов, данный пример использует библиотеку работы с COM объектами.

include { "olecom.ge"}
...
oleobj excapp
excapp.createobj( "Excel.Application", "" )
excapp.flgs = $FOLEOBJ_INT
excapp~Visible = 1
excapp~WorkBooks~Add
excapp~Cells( 3, 2 ) = "Hello World!"

Редактировать