Главная страница
    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.034 c
1-1088060969
Yustas
2004-06-24 11:09
2004.07.11
ActiveX и Explorer


1-1088584282
Николай
2004-06-30 12:31
2004.07.11
Очень простой вопрос: подскажите код символа конца файла


1-1088579909
Aleksandr
2004-06-30 11:18
2004.07.11
Из Excel в Delphi


3-1087217688
vlad_ri
2004-06-14 16:54
2004.07.11
список баз данных на MS SQL сервере


1-1088067873
Partos
2004-06-24 13:04
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский