Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ADO и DLL, как передать коннект к БД? 
:(
    Опции темы
MakNik
Дата 5.4.2006, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 5.4.2006

Репутация: нет
Всего: 0



Есть приложение которое через один общий коннект подключается к MSSQL. И есть DLL с формой. DLL подключается динамически. Нужно чтобы форма из библиотеки могла подключаться к БД используя тот-же коннект, что и у приложения. Подскажите, плз., как передать в DLL коннект к базе?
PM   Вверх
Bose
Дата 5.4.2006, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

Репутация: 9
Всего: 51



так же как и переменную smile
передавай переменную типа TadoDBConnection или какого оно там у тебя типа smile

п.с. пользуйся поиском, уже когда-то обсуждалось smile
PM MAIL WWW Skype   Вверх
MakNik
Дата 6.4.2006, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 5.4.2006

Репутация: нет
Всего: 0



код DLL:
Код

Procedure ShowModal(VConnection:TADOConnection); stdcall;
var
  About: TAbout;
begin
  About := TAbout.Create(nil);
  About.Connection:=VConnection;
  About.ShowModal;
  About.Free;
end;



вызываю процедуру из DLL:
Код

procedure TMainForm.N21Click(Sender: TObject);
var
      ShowAbout: Procedure(VConnection:TADOConnection);

      LibHandle: THandle;
      IpLibFileName:Pchar;
begin
  Try
     @ShowAbout := nil;
     IpLibFileName:=Pchar(ExtractFilePath(Application.ExeName)+'Library\AboutForm.dll');
     LibHandle := LoadLibrary(IpLibFileName);
     if LibHandle >= 32 then begin
       @ShowAbout := GetProcAddress(LibHandle,'ShowModal');
       if @ShowAbout <> nil then
         ShowAbout(dm.ADOConnection);
     end;
  finally
     FreeLibrary(LibHandle);
  End;
end;


Подскажите, пожалуйста, что я делаю не так? ...
PM   Вверх
MakNik
Дата 17.4.2006, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 5.4.2006

Репутация: нет
Всего: 0



Разобрался!
Все оказалось намного проще, чем казалось...
в общем, процедура ShowModal объявлена как stdcall
Код

Procedure ShowModal(VConnection:TADOConnection); stdcall;

а при вызове процедуры 
Код

procedure TMainForm.N21Click(Sender: TObject);
var
      ShowAbout: Procedure(VConnection:TADOConnection);

тоже нужно добавить stdcall;
 
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0525 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.