CreateThreadedOLE

From SunFlurry wiki
Jump to: navigation, search
  CreateThreadedOLE (Создание OLE объекта)
Объект:Функции общего назначения
Статус разработки: Реализована
Тип:Функция
Обращение к БД:Нет
Исключения:Невозможно превратить в строку, ошибка создания объекта
Визуальность:Нет

Функция создает новый объект OLE (COM) по строке идентификатора, если требуемый объект в системе отсутствует, функция вызывает исключение. Объект работает в режима STA, однако, может быть доступен в любом потоке, не только в том, который создал объект. Вызовы к таким объектам осуществляются несколько медленнее (однако, замедление очень невелико). Так все такие вызовы выполняются в одном особом потоке, в многопоточном клиенте (особенно консольном) может возникнуть ситуация, когда выполнение вызовов задерживается, так как вызвавший поток ждет, пока выполнится вызов другого потока. Если такая ситуация недопустима, необходимо использовать функцию CreateOLE и выполнять действия с объектом только в одном потоке.

Синтаксис

CreateThreadedOLE(<Идентификатор объекта OLE (STRING)>):<Новый объект OLE (OLE)>

Аргументы

  • <Идентификатор объекта OLE (STRING)> - Строка-индентификатор объекта. К примеру "Excel.Application" или "ADODB.Connection".

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

Возвращает созданный объект.

Примеры

//Пример создает новую книгу Excel с листом "Данные" и заполняет на нем квадрат 20 на 20 ячеек случайными числами.
Try
  Х:=CreateThreadedOLE("Excel.Application");
Except
  Message(PopError(),"!");
  Message("Ошибка создании объекта! Возможно, не установлен MS Excel!","!");
  Exit;
EndTry;
Try
  Х.WorkBooks.Add();
  Х.WorkSheets(1).Name:="Данные";

  Л:=Х.WorkSheets(1);
  Л.Activate();
  Л.Select();
  //Заполнение квадрата 20 x 20 случайными числами 0..9
  For i:=1 To 20 Do
    For j:=1 To 20 Do
      Л.Cells(i,j).Value:=Str(Random(10));
    EndDo;
  EndDo;
Finally
  Х.Visible:=1;
EndTry;