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

Вниз

Ошибка при обращении к DCOM обьекту   Найти похожие ветки 

 
Maxim Pshevlotsky ©   (2003-05-24 12:44) [0]

Здравствуйте Мастера! Возникает ошибка при обращении к DCOM обьекту(точнее к удаленному модулю данных).
Делаю все вроде как по инструкции:

var Vrem, DCOMData: IDComData;
begin
Vrem:=CoDComdata.Create;
Vrem.QueryInterface(IDcomData,DComData);
<...>

Ошибку пишет такую:
... raised exception class EOleSysError with message "Не был произведен вызов CoInitialize" ...

В чем проблема?


 
Юрий Федоров ©   (2003-05-24 13:06) [1]

Если делаешь это в инициализации - то такая проблема была


 
Maxim Pshevlotsky ©   (2003-05-24 13:07) [2]

Юрий Федоров © (24.05.03 13:06)
Это я делаю при обращении к DLL


 
sniknik ©   (2003-05-24 13:23) [3]

на ошибку "Не был произведен вызов CoInitialize" ... достойный ответ произвести этот вызов! :о)
так
CoInitialize(nil) (а после "разынициализировать")


 
Maxim Pshevlotsky ©   (2003-05-24 13:37) [4]

sniknik © (24.05.03 13:23)
Пардон, а как его вызвать та, и вообще ну хто это такой?(глупый вопрос знаю ;))


 
sniknik ©   (2003-05-24 13:45) [5]

uses ActiveX;

begin
CoInitialize(nil);
....{код}....
CoUnInitialize();
end.

+ встаеш курсором на CoInitialize и нажимаеш Ctrl+F1.


 
Юрий Федоров ©   (2003-05-24 13:49) [6]

>>sniknik © (24.05.03 13:45)
Самое странное то, что это не всегда помогает :-)


 
sniknik ©   (2003-05-24 14:07) [7]

это помогает всегда если ставить до вызова обьектов COM, если умудрится поставить позже то конечно.


 
Maxim Pshevlotsky ©   (2003-05-24 14:11) [8]

Все работает ОК!, только при вызове CoUnInitialize() возникает OLE ошибка. Я её не вызываю и все вроде в порядке.
Странно... :|


 
sniknik ©   (2003-05-24 14:35) [9]

они у тебя гдето пересекается. должны быть строго парные
CoInitialize
CoUnInitialize();
а так дельфи тоже производит вызов то ... гдето путаница.
кстати если так(используеш модуль где идет вызов - ComObj) то возможно тебе не нужно вызывать его самому, просто передвинуть свой код
Vrem:=CoDComdata.Create;
Vrem.QueryInterface(IDcomData,DComData);
подальше, после вызова initialization из ComObj.




 
VaS ©   (2003-05-24 15:09) [10]

CoInitialize() создает апартамент COM. Должна вызываться в каждой нити, в которой планируется осуществлять вызовы методов COM-объектов. Если же в данной нити создается СОМ-объект, методы которого будут вызываться из других апартаментов (кроме модели free), то также необходимо организовать цикл выборки сообщений windows. Для главной нити CoInitialize() вызывается автоматически при подключении модуля ComObj.


 
Maxim Pshevlotsky ©   (2003-05-24 16:04) [11]

Все заработало, меня только смущает медлительность инициализации всего этого. Процессор у меня мощный, а "рожается" долго :(


 
Maxim Pshevlotsky ©   (2003-05-24 16:19) [12]

sniknik © (24.05.03 14:35)
Кстати Да действительно, если тестируешь без дельфи то никаких ошибок не происходит.



Страницы: 1 вся ветка

Текущий архив: 2003.06.05;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.026 c
3-12995
cherox
2003-05-15 13:49
2003.06.05
Как выделить кусок записей в RxDbGrid?


1-13131
andre
2003-05-23 01:47
2003.06.05
ini-файл


3-13083
Ich Hasse
2003-05-17 15:32
2003.06.05
Как выделить ПОСЛЕДНЮЮ запись???


14-13417
Дмитрий К.К.
2003-05-19 06:09
2003.06.05
Именинники 19 мая


7-13497
Михан
2003-04-03 14:03
2003.06.05
Скажите пожалуйста как узнать в Delphi какой регистр включен