Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.05.13;
Скачать: CL | DM;

Вниз

DLL+ADO+MSSQL   Найти похожие ветки 

 
oss   (2002-04-25 01:27) [0]

Вопрос вот в чем. Есть DLL в которой несколько форм и свой датамодуль с набором ADO (Query,dataset & etc). И все бы хорошо,
но при попытке сделать POST , DLL выдает ошибку типа "Ощибка оращения к памяти и т.п.". Причем при попытке сделать вставку или апдейт в процедуре, которая экспортируется все ОК, а при попытке сделать это с помощью формы самой DLLи лезет ошибка.
Может ко подскажет выход или предложит идею ? заранее благодарен


 
Dy-Ty   (2002-04-25 09:24) [1]

Скорее всего не с инициализирован COM-объект
попробуй так

CoInitialize(nil)
........
?????????
{и какая-то вторая функция, которая убивает этот COM-объект, подробнее смотри MSDN}

удачи....


 
oss   (2002-04-25 11:10) [2]

возможно, но у меня вообще нет комов, обичная ДЛЛя.
Access violation at adress ... in module "....DLL"


 
Nebuchadnezzar ©   (2002-04-25 15:31) [3]

не важно что твоя DLL не COM-объект... ADO использует их...
попробуй CoInitialize(nil);


 
oss   (2002-04-25 18:16) [4]

хорошо, но где это пробывать ?!


 
Merle Corey   (2002-04-25 20:40) [5]

У меня есть ф-ция
implementation
. . .
var
FCoInitialized: Boolean = False;
. . .
procedure ReCoInitialize;
begin
if FCoInitialized then CoUninitialize; // Или как там ее
CoInitualize(nil);
FCoInitialized := True;
end;
. . .

И вызываешь ее перед каждым обращением к ADO-компанентам.


 
Merle Corey   (2002-04-25 20:43) [6]

Забыл отметить, что такой способ (см. выше) предпочтительнее использовать в MultiThreads приложениях. Для DLL возможно достаточно будет одно вызова.


 
oss   (2002-04-26 10:12) [7]

и еще один вопрос - сами по себе CoUninitialize и CoInitualize не определенные функции, а из какой они библиотеки , юнита ?


 
Dy-Ty   (2002-04-26 11:02) [8]

Поробуй подключить "ActiveX.pas"


 
oss   (2002-04-26 11:25) [9]

ну блина... делаю
> ReCoInitialize;
> m_db2.q_risk.close;
и на Close лезет ошибка !!!
Access violation ... in module xxx.dll



 
oss   (2002-04-26 12:26) [10]

Дополнение:
проблема обусловлена тем, что при попытке выполнить действия с каким-либо компонентом расположенным на другой форме, не своей, и лезет ошибка. пример:
form1.edit.text:="sdsd", а пишу я это в модуле form2,
обе формы в одном ДЛЛе и созданы


 
Merle Corey   (2002-04-26 12:59) [11]

проверь...
. . .
if assigned(form1) then form1.edit.text = "Hello"
else ShowMessage("form1 is null");
. . .


 
Merle Corey   (2002-04-26 13:00) [12]

В DLL формы автоматически не создаются ( информация к размышления)


 
oss   (2002-04-26 13:45) [13]

я знаю что не оздаются, я их все создал.
пример я неудачно привел,
такойже только вместо edita взять ADOQuery и пытаться ее открыть


 
oss   (2002-04-29 11:30) [14]

.


 
oss   (2002-04-29 11:30) [15]

...



Страницы: 1 вся ветка

Текущий архив: 2002.05.13;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.015 c
3-39672
wer
2002-04-17 19:08
2002.05.13
В запросе SUM не считает всё!


3-39677
Socrat
2002-04-16 09:03
2002.05.13
Помогите отучить ADO сжирать память !


1-39754
kull
2002-04-27 14:21
2002.05.13
TabOrder......


1-39775
VCL
2002-04-15 21:48
2002.05.13
Обработка вставки из буфера


1-39694
onix
2002-04-29 14:07
2002.05.13
TRegistry ???