Главная страница
    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.021 c
2-1133896966
cp.Silver
2005-12-06 22:22
2005.12.25
Диспетчер задач


3-1131443597
Laymer
2005-11-08 12:53
2005.12.25
Получение список таблиц и их полей


6-1126792403
TG
2005-09-15 17:53
2005.12.25
Движок для браузера


2-1133810801
ZefiR
2005-12-05 22:26
2005.12.25
Помогите! Мой Дельфак выкидывает ошибку!


2-1134023604
MAXHO
2005-12-08 09:33
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский