![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
DLL+ADO+MSSQL [D6, Win2k]
oss © (2002-04-25 01:27:00)Вопрос вот в чем. Есть DLL в которой несколько форм и свой датамодуль с набором ADO (Query,dataset & etc). И все бы хорошо,
но при попытке сделать POST , DLL выдает ошибку типа "Ощибка оращения к памяти и т.п.". Причем при попытке сделать вставку или апдейт в процедуре, которая экспортируется все ОК, а при попытке сделать это с помощью формы самой DLLи лезет ошибка.
Может ко подскажет выход или предложит идею ? заранее благодарен
oss (2002-04-29 11:30:00) [1].
oss (2002-04-29 11:30:00) [2]...
oss (2002-04-26 13:45:00) [3]я знаю что не оздаются, я их все создал.
пример я неудачно привел,
такойже только вместо edita взять ADOQuery и пытаться ее открыть
Merle Corey (2002-04-26 13:00:00) [4]В DLL формы автоматически не создаются ( информация к размышления)
Merle Corey (2002-04-26 12:59:00) [5]проверь...
. . .
if assigned(form1) then form1.edit.text = "Hello"
else ShowMessage("form1 is null");
. . .
oss (2002-04-26 12:26:00) [6]Дополнение:
проблема обусловлена тем, что при попытке выполнить действия с каким-либо компонентом расположенным на другой форме, не своей, и лезет ошибка. пример:
form1.edit.text:="sdsd", а пишу я это в модуле form2,
обе формы в одном ДЛЛе и созданы
oss (2002-04-26 11:25:00) [7]ну блина... делаю
> ReCoInitialize;
> m_db2.q_risk.close;
и на Close лезет ошибка !!!
Access violation ... in module xxx.dll
Dy-Ty (2002-04-26 11:02:00) [8]Поробуй подключить "ActiveX.pas"
oss (2002-04-26 10:12:00) [9]и еще один вопрос - сами по себе CoUninitialize и CoInitualize не определенные функции, а из какой они библиотеки , юнита ?
Merle Corey (2002-04-25 20:43:00) [10]Забыл отметить, что такой способ (см. выше) предпочтительнее использовать в MultiThreads приложениях. Для DLL возможно достаточно будет одно вызова.
Merle Corey (2002-04-25 20:40:00) [11]У меня есть ф-ция
implementation
. . .
var
FCoInitialized: Boolean = False;
. . .
procedure ReCoInitialize;
begin
if FCoInitialized then CoUninitialize; // Или как там ее
CoInitualize(nil);
FCoInitialized := True;
end;
. . .
И вызываешь ее перед каждым обращением к ADO-компанентам.
oss (2002-04-25 18:16:00) [12]хорошо, но где это пробывать ?!
Nebuchadnezzar (2002-04-25 15:31:00) [13]не важно что твоя DLL не COM-объект... ADO использует их...
попробуй CoInitialize(nil);
oss (2002-04-25 11:10:00) [14]возможно, но у меня вообще нет комов, обичная ДЛЛя.
Access violation at adress ... in module "....DLL"
Dy-Ty (2002-04-25 09:24:00) [15]Скорее всего не с инициализирован COM-объект
попробуй так
CoInitialize(nil)
........
?????????
{и какая-то вторая функция, которая убивает этот COM-объект, подробнее смотри MSDN}
удачи....