Вниз
Скачать: CL | DM;

Код не работает в DLL и работает в EXE   Найти похожие ветки 

 
Unax   (2004-06-24 17:10) [0]

Я создал DLL с функцией передачи данных в Excel. Эта функция нормально работает в обычном проекте, но в DLL в указанной строчке выдается ошибка EOleSysError с сообщением "CoInitialize has not been called". Подскажите с чем это может быть связано.

Вообщем код такой

var
 Range,V : OleVariant;
 i : integer;
 ExcelApplication1: TExcelApplication;
 ExcelWorkbook1: TExcelWorkbook;
 ExcelWorksheet1: TExcelWorksheet;
begin
 ExcelApplication1 := TExcelApplication.Create(nil);
 ExcelWorkBook1    := TExcelWorkbook.Create(nil);
 ExcelWorkSheet1   := TExcelWorksheet.Create(nil);
 ExcelApplication1.ConnectKind := ckNewInstance;
 ExcelApplication1.SheetsInNewWorkbook[LOCALE_USER_DEFAULT] := 1;
 ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add(EmptyParam,LOCALE_USER_DEFAULT));
 ExcelWorkBook1.Activate(LOCALE_USER_DEFAULT);
 ExcelWorksheet1.ConnectTo(ExcelApplication1.ActiveWorkbook.ActiveSheet as ExcelWorkSheet);
 ExcelApplication1.Visible[LOCALE_USER_DEFAULT] := true;
 ExcelWorkSheet1.Name := "?????????";
 Range := ExcelWorkSheet1.Range["A1","H1"];
 V := VarArrayCreate([1,8],varVariant);
 V[1] := "????????";
 V[2] := "?????";
 V[3] := "???????";
 V[4] := "????";
 V[5] := "?????";
 V[6] := "??????";
 V[7] := "??????";
 V[8] := "??. ?????";
 Range.Value := v;
 ExcelWorkbook1.Disconnect;
 ExcelWorksheet1.Disconnect;
 ExcelApplication1.Disconnect;
 ExcelApplication1.Free;


 
Тимохов ©   (2004-06-24 17:17) [1]

именно с тем, что написано в сообщении об ошибке.
надо вызывать указанную функцию.


 
Тимохов ©   (2004-06-24 17:22) [2]

я не сильно хорошо помню детали, но точно знаю одно, что для того, чтобы обращаться к com из потока нужно вызвать coinitialize. Для главногоо потока за вас это уже дельфи сделал сам, а для доп потоков надо делать самому. Как дела обстоят с dll, не помню, но допускаю, что для dll также важна эта функция. почитайте про нее в msdn


 
Unax   (2004-06-24 17:29) [3]

Спасибо огромное! Заработало
Надо вызывать ф-ю CoInitializeEx



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.025 c
1-1088062573
Del_programmer
2004-06-24 11:36
2004.07.11
Регистрация проги


14-1087980998
WondeRu
2004-06-23 12:56
2004.07.11
Чего там в "Ершово"?


14-1088074044
infom
2004-06-24 14:47
2004.07.11
Кто какими компонентами в основном пользуется ?


3-1087356417
Господин Уэф!
2004-06-16 07:26
2004.07.11
Рушится таблица с автоинкрементным полем.


3-1087119568
Axelrodm
2004-06-13 13:39
2004.07.11
Чтение курсора (c BLOB )из Хранимой процедуры ORACLE в BDE




   Наверх