![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Уважаемые Мастера. Почему не создается ADOQuery? [D6, MSSQL]
Vovik © (2003-07-01 15:43:00)Пишу DLL с формой на которой лежат ADOQuery и ADOConnection.
При вызове DLL выдается ошибка "Не был произведен вызов CoInitialize". Если убрать эти два компонента с формы то все ОК.
В чем проблема?
sniknik (2003-07-01 19:45:00) [1]CoUnInitialize() в конце не забывай вызывать (вызовы должны быть строго парные)
Vovik (2003-07-01 17:03:00) [2]ВОТ СПАСИБО !!!!
Вот так работает
В DLL
procedure ShowOtchets;
Begin
CoInitialize(nil);
Form1:=TForm1.Create(Form1); /// И нету ошибки :-))
Form1.Show;
End;
exports
ShowOtchets;
stone (2003-07-01 16:45:00) [3]В OnCreate главной формы приложения (не библиотеки) первой строкой (чтобы наверняка)
CoInitialize(nil);
PS. Не забудь в uses добавить ActiveX
Семен Сорокин (2003-07-01 16:29:00) [4]а почему бы тебе не сделать так:
CoInitialize;
ADOQuery.create(..)
vovik (2003-07-01 16:28:00) [5]Хороший документ, много полезного можно узнать.
Спасибо.
Только ошибка то остается.
Не был произведен вызов CoInitialize
и
Exception EOLESysError
Кстати точно такая же ошибка появляется, если пытаешься динамически создать ADO компонент в потоке. В этом случае мне пришлось в главной форме создавать массив из ADOQuery и в поток передавать индекс, для работы с определенным ADOquery.
Семен Сорокин (2003-07-01 16:15:00) [6]http://www.delphimaster.ru/articles/book/Chap09.pdf
vovik (2003-07-01 16:14:00) [7]Из основной формы вызываю
procedure TForm1.Button1Click(Sender: TObject);
var Hbar1: Thandle;
Foo1: procedure;
begin
Hbar1 := LoadLibrary("otchets.dll");
if Hbar1 >= 32 then { Успешно }
begin
Foo1 := GetProcAddress(HBar1, "ShowOtchets");
Foo1;
end
else
MessageDlg("не найден otchets.dll", mtError, [mbOk], 0);
end;
В DLL
procedure ShowOtchets;
Begin
Form1:=TForm1.Create(Form1); /// ОШИБКА !!!!!!
Form1.Show;
End;
exports
ShowOtchets;
Почему именно ADO компоненты вызывают ошибку ? DBE , Apolo, Halcyon - всо нормально
Vovik (2003-07-01 16:05:00) [8]а как произвести этот вызов?
я просто кидаю компонент на форму, по идее он сам должен создаться при создании формы.
stone (2003-07-01 15:49:00) [9]
> В чем проблема?
> Не был произведен вызов CoInitialize