Текущий архив: 2008.01.13;
Скачать: CL | DM;
Вниз
Ошибка при создание Excel.Application из потока Найти похожие ветки
← →
Nike (2007-12-12 09:59) [0]Здравствуйте!
Хочу вынести в отдельный поток выполнение процедуры выгрузки данных в эксель. Без потока все работает нормально, если же я в теле потока (TMyThread.Execute) вызываю процедуру выгрузки, то появляется ошибка:
EOleSysError "Не был произведен вызов CoInitialize"
фрагмент кода, в котором возникает ошибка ниже:
...
var XL: Variant;
...
try
XL:=CreateOleObject("Excel.Application"); //вот здесь возникает ошибка
XL.Application.EnableEvents := false;
XL.Application.DisplayAlerts:= false;
XL.Workbooks.Add(extractFilePath(paramstr(0))+"\Template.xls");
XL.Visible:=False;
except
Raise Exception.Create("Ошибка открытия объекта Excel");
exit;
end;
Пробовал вызвать до этого строки с ошибкой XL.Coinitialize; но этот вызов дает ошибку - инвалидная операция с вариантом. Не пойму, как тогда сделать надо? И почему возникает эта ошибка?
Поделитесь, может кто сталкивался с такой проблемой?
← →
Palladin © (2007-12-12 10:01) [1]CoInitialize/Couninitialize это функции из модуля ActiveX
← →
Сергей М. © (2007-12-12 10:03) [2]
CoInitialize(nil);
try
.. создание олей-объекта
.. работа с олей-объектом
.. уничтожение олей-объекта
finally
CoUninitialize;
end;
← →
Palladin © (2007-12-12 10:10) [3]рекомендую также либо выставить в файле проекта
CoInitFlags:= COINIT_MULTITHREADED;
либо использовать CoInitializeEx(Nil,COINIT_MULTITHREADED)
← →
Anatoly Podgoretsky © (2007-12-12 11:46) [4]> Nike (12.12.2007 09:59:00) [0]
Не может оно выдать такую ошибку, поскольку в коде нет вызова функции, откуда, из воздуха или на будущее?
← →
Nike (2007-12-12 14:53) [5]To Palladin, Сергей М.
спасибо, действительно помогло. А я пытался вызывать CoInitialize, как метод переменной типа Variant.
Anatoly Podgoretsky © (12.12.07 11:46) [4]
Вы о какой функции??
← →
ага (2007-12-13 05:54) [6]рекомендую также либо выставить в файле проекта
CoInitFlags:= COINIT_MULTITHREADED;
либо использовать CoInitializeEx(Nil,COINIT_MULTITHREADED)
Зачем?
Страницы: 1 вся ветка
Текущий архив: 2008.01.13;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.006 c