Главная страница
    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.035 c
14-1087546150
Kerk
2004-06-18 12:09
2004.07.11
"Полный апгрейд"


4-1085940807
parovoZZ
2004-05-30 22:13
2004.07.11
Выключить комп


3-1086942035
Марат
2004-06-11 12:20
2004.07.11
DBGrid


1-1087981658
Dima
2004-06-23 13:07
2004.07.11
TOpenPictureDialog


3-1087060257
Дэвид
2004-06-12 21:10
2004.07.11
DBLookupComboBox1





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский