Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

'Не был произведен вызов CoInitialize' [D6, MSSQL]


AlexTP ©   (2004-08-04 14:20:00) 

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


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


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


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

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


KosilkA   (2004-08-04 17:14:00) [2]


> 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 прописать это имя


Anatoly Podgoretsky   (2004-08-04 17:09:00) [3]

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


KosilkA   (2004-08-04 17:02:00) [4]

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


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


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


Попробовал:

external exception C000001D там же MainForm.Free


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

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


KosilkA   (2004-08-04 16:46:00) [7]

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

initialization
Coinitialize(nil);
finalization
CoUninitialize;
end.

?


KosilkA   (2004-08-04 16:44:00) [8]

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


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

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


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

У меня действительно 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;


KosilkA   (2004-08-04 16:04:00) [11]

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


KSergey   (2004-08-04 15:24:00) [12]

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

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


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

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


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

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо