Текущий архив: 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.027 c