Вниз
Скачать: 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.028 c
14-1093830697
Думкин
2004-08-30 05:51
2004.09.19
С днем рождения! 30 августа


8-1088501259
GooFfy
2004-06-29 13:27
2004.09.19
TImage


14-1094051679
}|{yk
2004-09-01 19:14
2004.09.19
Верите ли вы в то, что можно выиграть миллион?


1-1093940733
hgd
2004-08-31 12:25
2004.09.19
Кто знает как можно управлять цифровым фотоаппаратом Olympus


8-1087798849
Korneley
2004-06-21 10:20
2004.09.19
Нужен пример захвата видео




   Наверх