Вниз
Скачать: 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.48 MB
Время: 0.03 c
3-1093083459
Lizka
2004-08-21 14:17
2004.09.19
кол-во записей в ListBox


11-1080637617
avakss
2004-03-30 13:06
2004.09.19
KoleDB+Access2000rus+Delphi7+Win2000rus


1-1094221622
hamster
2004-09-03 18:27
2004.09.19
CRC32


4-1091510957
fatal
2004-08-03 09:29
2004.09.19
Создание сервиса виндовс...


1-1094196635
__test__
2004-09-03 11:30
2004.09.19
Real в Integer




   Наверх