Re[3]: CoDomDocument проблема
От: Danchik Украина  
Дата: 19.02.07 12:05
Оценка:
Здравствуйте, IONIX, Вы писали:

ION>Здравствуйте, wildwind, Вы писали:


W>>Надо вызывать CoInitializeEx/CoUninitialize.

ION>--------------------------------------------
ION>В этом случае DLL вообще перестаёт работать:
ION>CoInitializeEx(NIL, 2);
ION>XML:=Doc.Create(); // создание документа DOM

ION>В этом выходит с ошибками:

ION>CoInitializeEx(NIL, 2);
ION>XML :=CreateComObject(CLASS_DOMDocument) as IXMLDOMDocument;

ION>использую при открытии формы CoInitializeEx(NIL, 2);

ION>использую при закрытии формы CoUninitialize();

CoInitializeEx/CoUninitialize вы должны вызывать не в библиотеке, а в потоке который будет вызывать функции вашей библиотеки. При чем только один раз.
Для того чтобы было более понятно для чего это нужно почитайте статью: Понимание подразделений COM
Автор(ы): Jeff Prosise
Дата: 22.02.2001

В этой статье подробно рассматриваются подразделения (apartments) в модели
COM. Автор описывает различные виды подразделений, показывает, каким образом
подразделения назначаются потокам и объектам, а также даёт ряд полезных
советов, которые позволят вам избежать ошибок при работе с подразделениями.
.

Для однопоточных програм на Delphi вам достаточно подключить в DPR-ку EXE-шки модуль ComObj.pas
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.