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

Вниз

Не был произведён вызов CoInitialize   Найти похожие ветки 

 
kblc ©   (2005-05-30 09:44) [0]

Уважаемые мастера, у меня к вам вопрос:

вот текс кода:


uses ..., ADODB, ...
...
procedure TfrConnection.GetDatabases(const ServerName: string; Storage: TStrings);
var
 Connection: TADOConnection;
 Query: TADOQuery;
begin
 Storage.Clear;

 Connection:=TADOConnection.Create(nil);
....
end;


Почему при Connection:=TADOConnection.Create(nil); у меня возникает exception "EOLESysError with text "Не был произведён вызов CoInitialize"  ".
Что это значит?


 
Виталий Панасенко   (2005-05-30 09:47) [1]

Что его нужно вызвать.. не это ли тебе пишут ?


 
kblc ©   (2005-05-30 09:50) [2]

Что значит "его нужно вызвать" ????????? а я что делаю???


 
kblc ©   (2005-05-30 09:50) [3]

да и как я могу его вызвать если я ТОЛЬКО создаю его???


 
Alexander Panov ©   (2005-05-30 09:55) [4]

kblc ©   (30.05.05 9:50) [3]
да и как я могу его вызвать если я ТОЛЬКО создаю его???


кого его?

набери CoInitialize и нажми F1.


 
Digitman ©   (2005-05-30 09:56) [5]

uses ActiveX;

CoInitialize(nil);
try
Connection:=TADOConnection.Create(nil);
try
..//работа с объектом Connection
finally
 Connection.Free;
end;
finally
CoUnInitialize;
end;


 
kblc ©   (2005-05-30 14:14) [6]

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

и как лучше сделать, писать этот когд всегда? ...
или это лучше сделать при инициализации библиотеки... и перед её уничтожением?


 
Digitman ©   (2005-05-30 14:27) [7]


> это происходит тогда, когда я это выполняю в библиотеке


да, происходит ... например, если проекты хост-приложения и библ-ки используют разные Делфи-соглашения об использовании ран-тайм-пакетов


> иначе такого не бывает вообще


не факт.

в ряде случаев это "бывает" тогда когда создание объекта автоматизации происходит в доп.трэде процесса


> как лучше сделать, писать этот когд всегда? ...
> или это лучше сделать при инициализации библиотеки... и
> перед её уничтожением?


универсальных рекомендаций нет.

но требование одно - если инициализация все же требуется, выполнять ее нужно до самой первой попытки создания олей/СОМ-объекта в конкретном трэде ... соответственно деинициализацию нужно выполнять после уничтожения этого объекта


 
Виталий Панасенко   (2005-05-30 14:53) [8]


uses ..., ADODB, ActiveX,...
...
procedure TfrConnection.GetDatabases(const ServerName: string; Storage: TStrings);
var
Connection: TADOConnection;
Query: TADOQuery;
begin
Storage.Clear;

 CoInitialize(nil);

Connection:=TADOConnection.Create(nil);
....
end;



 
kblc ©   (2005-05-31 08:47) [9]

2DigitMan: thnx



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

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

Наверх




Память: 0.49 MB
Время: 0.05 c
4-1117543643
Cosinus
2005-05-31 16:47
2005.07.25
Как создать моргающий прямоугольник вокруг любого окна?


3-1118819212
lexa12345
2005-06-15 11:06
2005.07.25
Несколько колонок таблиц в QuickReport


1-1120720921
nat
2005-07-07 11:22
2005.07.25
чтение данных из файла


14-1120122816
Андрей Жук
2005-06-30 13:13
2005.07.25
Сколько участников интернет-форума нужно для замены лампочки?


14-1120381468
Nous Mellon
2005-07-03 13:04
2005.07.25
Простой, надеюсь, вопрос по Си