Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];

Вниз

Код не работает в 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.037 c
14-1087893791
X9
2004-06-22 12:43
2004.07.11
Редактирование HLP-файлов


14-1087972120
Илья
2004-06-23 10:28
2004.07.11
проблема с загрузкой


1-1088398293
X-Men
2004-06-28 08:51
2004.07.11
Как получить указатель на функцию?


1-1087999257
Alexis
2004-06-23 18:00
2004.07.11
Использование GIF в Delphi


1-1088442016
XeLax
2004-06-28 21:00
2004.07.11
Когда модуль вне папки ...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский