Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.07.11;
Скачать: 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 вся ветка

Текущий архив: 2004.07.11;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.051 c
3-1087455401
vic1
2004-06-17 10:56
2004.07.11
Автосумма


8-1082855383
Dr.zlo
2004-04-25 05:09
2004.07.11
Хорошие хинты


1-1088358290
Dio
2004-06-27 21:44
2004.07.11
передача числовых значений из DLL


8-1083141345
Marina_S
2004-04-28 12:35
2004.07.11
Исходник JPEG


4-1085520884
Германн
2004-05-26 01:34
2004.07.11
Documents and Settings