Форум: "Базы";
Текущий архив: 2005.12.25;
Скачать: [xml.tar.bz2];
ВнизКак расшарить ADOConnection из exe в dll? Найти похожие ветки
← →
WondeRu © (2005-11-08 14:31) [0]Здарвствуйте!
Подскажите, пожалуйста, каким образом можно использовать в dll ADOConnection, созданный в exe приложении?
Заранее спасибо!
← →
ANB © (2005-11-08 15:22) [1]Подключить в DLL нужные модули и передать его адрес.
← →
WondeRu © (2005-11-08 15:24) [2]ANB © (08.11.05 15:22) [1]
а подробнее?
Если адрес объекта TADOConnection, то это не ко мне :)
← →
ANB © (2005-11-08 15:29) [3]
> Если адрес объекта TADOConnection, то это не ко мне :)
А к кому ? Пример делать надо - а некогда. Граблей соберешь по любому. Хотя может и подскажет кто с примером.
← →
WondeRu © (2005-11-08 15:31) [4]ANB © (08.11.05 15:29) [3]
Нельзя передавать внутрь другого модуля ссылку объект, только интерфейс!
← →
WondeRu © (2005-11-08 15:48) [5]вот чего-то наваял, жду ваших замечаний:
exe:
procedure DoSelect(AIConnection: _Connection);stdcall;external "project2.dll" name "DoSelect";
procedure TForm1.Button1Click(Sender: TObject);
begin
DoSelect(ADOConnection1.ConnectionObject);
end;
dll:procedure DoSelect(AIConnection: _Connection);
var
ADOQuery: TADOQuery;
ADOConnection: TADOConnection;
begin
ADOConnection := TADOConnection.Create(nil);
ADOQuery := TADOQuery.Create(nil);
try
ADOConnection.ConnectionObject := AIConnection;
ADOQuery.Connection := ADOConnection;
ADOQuery.SQL.Text := "select * from results";
ADOQuery.Open;
if not ADOQuery.Eof then
begin
MessageBox(0, PChar(ADOQuery.Fields[0].AsString),"",mb_ok);
end;
ADOQuery.Close;
finally
ADOQuery.Free;
ADOConnection.Free;
end;
end;
← →
ANB © (2005-11-08 16:14) [6]
> WondeRu © (08.11.05 15:48) [5]
Больше меня знаешь, а просишь совета.
По коду : думаю, что ты захочешь работать с этим коннектом внутри самой DLL из других функций, посему переменную для коннекта я бы сделал глобальной. Иначе смысл в этой DLL ?
Кстати - работает ?
ЗЫ. Для общего развития - а почему нельзя передавать ссылку на объект ? Application вроде народ передает.
← →
WondeRu © (2005-11-08 16:24) [7]ANB © (08.11.05 16:14) [6]
Application вроде народ передает.
передает, но не просто так... передается лишь хэндл:Application.Handle
Ссылку на объект нельзя передавать, потому что dll и exe могут быть скомпилированы в разных версиях Delphi (т.е. они возможно будут иметь различное объявление одного и того же класса).
В моем случае dll может быть скомпилирована и на C++ (код правда надо будет чуть подправить ;) ).
Глобальные переменные - это по ситуации (я их почти не использую).
ЗЫ. Работает, но не знаю правильно ли (имеется в виду RefCount у _Connection и еще возможные траблы) :(
← →
ANB © (2005-11-08 16:33) [8]
> WondeRu © (08.11.05 16:24) [7]
Млин, про разные версии ты не писал. Тогда и правда, нельзя.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.12.25;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.014 c