Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.029 c
6-1089718505
BDytel
2004-07-13 15:35
2004.09.19
Непонятные тормоза в работе ServerSocket


14-1093525219
ИМХО
2004-08-26 17:00
2004.09.19
Список из 50 программ


4-1091891488
Seldon
2004-08-07 19:11
2004.09.19
Как определить какой шрифт...


14-1094100676
Rule
2004-09-02 08:51
2004.09.19
Вопрос к жителям юга Украины, вчастности Одессы, Кречи и


14-1094039733
SDK
2004-09-01 15:55
2004.09.19
Сколько стоит Flash диск?




   Наверх