Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.29;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.027 c
3-96117
Rel_
2003-09-09 08:53
2003.09.29
Проблема с кодировкой


1-96275
Zhouck
2003-09-17 10:20
2003.09.29
Delphi и Win2003


8-96311
Дима
2003-05-31 01:01
2003.09.29
средства работаты с платами видеозахвата


3-96113
BorisSV
2003-09-10 14:27
2003.09.29
Про TDBGrid.DataSource


3-96066
vopros
2003-09-10 12:18
2003.09.29
У DbgridEh Можно ширину колонки менять