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

Вниз

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

 
AlexTP   (2004-08-04 14:20) [0]

Помогите решить проблему: на форме лежит ADOConnection, при создании формы в кострукторе ADOCommand после вызова CreateADOObject(CLASS_Command) as _Command; вылетает Exception:
"Не был произведен вызов CoInitialize". Почему ?


 
KSergey ©   (2004-08-04 14:22) [1]

Надо просто не стесняться и вызвать при инициализации CoInitialize


 
alexTP   (2004-08-04 14:52) [2]

При инициализации чего ? ADODB.pas переписать ?


 
KSergey ©   (2004-08-04 15:24) [3]

Переписывать ничего не надо
Достаточно вызвать эту процедуру, увы не помню в каком юните.

Это у вас exe или dll? Обычно с exe таких проблем не возникает, там вызов встроен (Application.Initialize, если не вру), а вот в dll-проект - нет. Не знаю почему.


 
KosilkA ©   (2004-08-04 16:04) [4]

function CoInitialize(pvReserved: Pointer): HResult; stdcall; external "ole32.dll" name "CoInitialize";


 
alexTP   (2004-08-04 16:29) [5]

У меня действительно dll.

Поставил CoInitialize(nil) ADOConnection успокоился.

procedure Ini;
begin
 CoInitialize(nil);
 MainForm:= TMainForm.Create(nil);
end;

Теперь Access violention на MainForm.Free;

procedure Deini;
begin
 MainForm.Free;
 CoUninitialize;
end;


 
alexTP   (2004-08-04 16:30) [6]

Удалено модератором


 
KosilkA ©   (2004-08-04 16:44) [7]

сорри про это забыл
procedure CoUninitialize; stdcall; external "ole32.dll" name "CoUninitialize";


 
KosilkA ©   (2004-08-04 16:46) [8]

а может проще дописать в конец юнита главной формы

initialization
Coinitialize(nil);
finalization
CoUninitialize;
end.

?


 
alexTP   (2004-08-04 16:49) [9]

Нормально, я уже догадался. Теперь проблема: не работает  MainForm.Free; :((


 
alexTP   (2004-08-04 16:54) [10]


> KosilkA ©   (04.08.04 16:46) [8]


Попробовал:

external exception C000001D там же MainForm.Free


 
KosilkA ©   (2004-08-04 17:02) [11]

дай свой код .. штоли ..=)))


 
Anatoly Podgoretsky ©   (2004-08-04 17:09) [12]

alexTP   (04.08.04 16:29) [5]
Теперь ошибка в другом месте не связаная с Coinitialize, так как MainForm глобальная переменная, то таких мест может быть много.


 
KosilkA ©   (2004-08-04 17:14) [13]


> alexTP   (04.08.04 16:29) [5]
> У меня действительно dll.
>
> Поставил CoInitialize(nil) ADOConnection успокоился.
>
> procedure Ini;
> begin
>  CoInitialize(nil);
>  MainForm:= TMainForm.Create(nil);
> end;
>
> Теперь Access violention на MainForm.Free;
>
> procedure Deini;
> begin
>  MainForm.Free;
>  CoUninitialize;
> end;

попробуй назначать имя новой форме и в вызове функции Deini прописать это имя


 
alexTP   (2004-08-04 17:34) [14]


> Anatoly Podgoretsky ©   (04.08.04 17:09) [12]


> так как MainForm глобальная переменная, то таких мест может
> быть много.

Воистину глобальная. Всем спасибо.



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

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

Наверх




Память: 0.49 MB
Время: 0.068 c
6-1089931752
Yegorchic
2004-07-16 02:49
2004.09.19
Проверка существования файла на сайте


4-1089209190
RapTor
2004-07-07 18:06
2004.09.19
Помогите победить тетю клаву


3-1092968740
Dub
2004-08-20 06:25
2004.09.19
Копирование таблиц


3-1093080762
KADAN
2004-08-21 13:32
2004.09.19
MSSQL -> Access


14-1094067102
Sanek_metaller
2004-09-01 23:31
2004.09.19
Где в реестре найти список сервисов?