Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
2-1133954653
Id
2005-12-07 14:24
2005.12.25
IBDataSet.


14-1133260981
DelphiN!
2005-11-29 13:43
2005.12.25
Одалела зараза!


2-1134134646
Bandit
2005-12-09 16:24
2005.12.25
Мастера! Помогите с TQuickRep!!!


2-1134013140
Tin
2005-12-08 06:39
2005.12.25
Вопрос по рациональному использованию базы данных


4-1130266042
zaN0za
2005-10-25 22:47
2005.12.25
возможно ли такое преобразование?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский