Форум: "Основная";
Текущий архив: 2003.09.29;
Скачать: [xml.tar.bz2];
Вниз
CoInitialize has not been called в TXSLPageProducer.content Найти похожие ветки
← →
flesh (2003-09-18 11:06) [0]При вызове TXSLPageProducer.content возникает ошибка "CoInitialize has not been called". Причем возникает она только когда cвойство "XML" в TXSLPageProducer и TXMLDocument задаются в процессе работы программы. Причем пример с XSL трансформацией, поставляемый с Delphi, тоже выдает ту же ошибку.
В чем может быть решение данной проблемы?
← →
Юрий Федоров (2003-09-18 11:11) [1]Видимо в вызове CoInitialize :)))
← →
Erik (2003-09-18 11:12) [2]А ты случеем не в потоке работаеш? Если в потоке тогда вызови CoInitialize а в конце CoUnInitialize
← →
flesh (2003-09-18 11:39) [3]CoInitialize это чей метод-то?
Если не трудно, пример приведите плиз... А то у меня уже крыша едет..
← →
flesh (2003-09-18 12:06) [4]Работаю не в потоке. Это методы потока?
Просто есть маза, что все это глюк Delphi.
Компоненты созданы НЕ в реал тайме, какая еще инициализация нужна?
Подскажите плиз
← →
Anatoly Podgoretsky (2003-09-18 12:11) [5]flesh © (18.09.03 12:06) [4]
Есть другое мнение, что Дельфи тут ни причем.
А то что ты все таки не приозвел вызов CoInitialize
← →
Sandman25 (2003-09-18 12:11) [6]uses ActiveX;
...
CoInitialize(nil);
...// работа
CoUninitialize;
← →
flesh (2003-09-18 12:16) [7]Sandman25, т.е. мне нужно включить в проект юнит ActiveX?
Это такая фича? Просто ActiveX-ами у меня в проекте и не пахнет вроде...
Если я страшно туплю, то пожалуйста, объясните где именно..
← →
Sandman25 (2003-09-18 12:20) [8]Тогда Uses Ole2.
← →
Sandman25 (2003-09-18 12:22) [9]В крайнем случае можно попытаться выдрать описания этих функций и вставить в свою программу. Правда, тогда наюо будет еще разбираться с initialization/finalization модуля.
← →
Юрий Федоров (2003-09-18 12:24) [10]Если у тебя есть формы, то ActiveX уже прикомпилирован :-)
Даже если есть uses Classes...
Так что не бойся, добавляй
← →
flesh (2003-09-18 12:31) [11]И что, мне включать в проект Ole2 и писать:
CoInitialize(nil);
...// код
CoUninitialize;
?
Главный Вопрос, который интересует меня больше всего:
Что именно я инициализирую этим методом (CoInitialize())?
Ведь у меня в проекте по сути только два компонента (не считая компонентов базы данных) TXSLPageProducer и TXMLDocument?
Я же ничего не использую из Ole2?
← →
Юрий Федоров (2003-09-18 12:33) [12]Если ты работешь с COM, то перед началом работы ты должен его инициализировать(для каждого потока), этим как раз и занимается функция CoInitialize (или CoInitializeEx)
Подробности по F1
← →
Sandman25 (2003-09-18 12:35) [13][11] flesh © (18.09.03 12:31)
Да.
А Вы думаете я знаю, что оно делает и зачем это надо?
Просто иначе не будет работать, вот и приходится писать :(
← →
flesh (2003-09-18 12:49) [14]To: Юрий Федоров, Sandman25
У меня в этом проекте не используется COM/DCOM, и вообще говоря, я никогда и нигде раньше не юзал CoInitialize и все работало.
Потоков здесь тоже нет.
В общем, я запутался.
выдержка из Classes:
_____________________________
unit Classes;
{$R-,T-,X+,H+}
{ ACTIVEX.HPP is not required by CLASSES.HPP }
(*$NOINCLUDE ActiveX*) <<<< это интересно
interface
uses SysUtils, Windows, ActiveX;
_____________________________
Так что, если в пустом проекте (а там есть Forms, Classes) написать CoInitialise(),
то получаем "Undeclared Identifier: CoInitialise()"
← →
Юрий Федоров (2003-09-18 12:52) [15]>>У меня в этом проекте не используется COM/DCOM
Ты же говоришь, что TXMLDocument используется...
>>то получаем "Undeclared Identifier: CoInitialise()
Это обычная функция, правила такие же, как и везде -
чтобы ее использовать, нужно в этом модуле прописать в uses тот
модуль, где она объявлена, в данном случае ActiveX
← →
Sandman25 (2003-09-18 12:53) [16]flesh
Вам выдало сообщение с предельно ясным диагнозом - надо вызвать CoInitialize.
Что касается, второго вопроса. Да, uses classes компонует и activex, но в Implementation, то есть так, что Вы к нему доступа из главной программы не имеете. Чему тут удивляться? Транзитивность на uses не распространяется.
← →
Erik (2003-09-18 13:04) [17]Хотя всетаки странно, ведь главный поток по умолчания инитиализирован. И по этому для создания com объекта ненадо делать CoInitialize в главном потоке. Возможно в нутри компонента создается поток и там нету CoInitialize. Тогда при обявлении в главном CoInitialize инчего неизменится, станет только хуже.
← →
flesh (2003-09-18 13:17) [18]To: Erik
Поэтому мне и кажется, что это бага компонента...
В дистрибутиве, где-то в Demos есть пример работы XSLPageProducer (не помну как именно называется проект), но он так же выдает ту же ошибку!
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.09.29;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.008 c