Форум: "WinAPI";
Текущий архив: 2004.09.19;
Скачать: [xml.tar.bz2];
ВнизНе был произведен вызов 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 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.09.19;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.034 c