EnglishРусский  

Реклама

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

Описание COM/OLE

Краткое описание COM/OLE библиотеки. В данную библиотеку также включена поддержка типа VARIANT, используемого при передаче/получении данных в/из COM объекты. Для работы с COM объектами используются переменные с типом oleobj, такой переменной может соответствовать один COM объект. Чтобы вызвать какой-либо метод COM объекта применяется оператор позднего связывания ~. Связывание COM объекта с переменной может происходить двумя способами:

1. Создание нового COM объекта с помощью метода oleobj.createobj:

oleobj excapp
excapp.createobj( "Excel.Application", "" )

2. Связь с существующим COM объектом (дочерним), как результат вызова метода COM объекта:

oleobj workbooks workbooks = excapp~WorkBooks

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

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

Вызов метода может возвращать только тип VARIANT, для последующей конвертации данных в стандартные типы Gentee используются соответствующие операции присваивания и приведения типов. Параметры вызова методов COM объектов, а также присваиваемые значения автоматически конвертируются в соответствующие типы VARIANT, можно использовать следующие типы Gentee - uint, int, ulong, long, float, double, str, VARIANT.

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

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

Объект oleobj имеет свойства:

  • uint flgs - флаги, можно установить или получить значение флагов, свойство может содержать флаг $FOLEOBJ_INT - при передаче данных в COM объект беззнаковый uint тип Gentee автоматически конвертируется в знаковый тип VARIANT( VT_I4 )
  • uint errfunc - функция для обработки ошибок. Данному свойству можно присвоить адрес функции, которая будет вызываться каждый раз, когда произойдет ошибка при обращении к COM объекту, функция должна иметь один параметр типа uint, через который будет передаваться код ошибки.

Свойства flgs и errfunc, автоматически устанавливаются у всех дочерних объектов.

Смотрите также

Исходники

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