Difference between revisions of "CreateThreadedOLE"
(No difference)
|
Revision as of 07:46, 2 February 2020
| CreateThreadedOLE (Создание OLE объекта) | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||
Функция создает новый объект OLE (COM) по строке идентификатора, если требуемый объект в системе отсутствует, функция вызывает исключение. Объект может быть доступен в любом потоке, не только в том, который создал объект. Вызовы к таким объектам осуществляются несколько медленнее (однако, замедление очень невелико). Так все такие вызовы выполняются в одном особом потоке, в многопоточном клиенте (особенно консольном) может возникнуть ситуация, когда выполнение вызовов задерживается, так как вызвавший поток ждет, пока выполнится вызов другого потока. Если такая ситуация недопустима, необходимо использовать функцию 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;