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

Вниз

[D7] Доступ к компонентам, рассположенным в DataModule в DLL?!   Найти похожие ветки 

 
DmitryZ   (2004-05-20 19:00) [0]

Привет всем!
Суть задачи: несколько разных интерфейсных модулей получающих доступ к базе данных одним и тем-же способом.
Можно было бы (так и делал) для каждого модуля компилировать свой DataModule. Но ... размер программ возрастает.
А если сделать DLLку с DataModule, то возникает проблема получения доступа к компонентам. Это как-то можно обойти?!
Заранее благодарю.
Дмитрий.


 
Mim1 ©   (2004-05-21 05:17) [1]

Воткомпилируйте дата модуль в runtime пакет, затем откомпилируйте все бибилотеки с использованием этого пакета.
Для все либ будет один экземпляр этого модуля.


 
DmitryZ   (2004-05-27 15:55) [2]

Ща, перефразирую, а то не въехал: значит мне надо заюзать(uses) пакет с DM из всех программ мне нужных. Скомпилировать все вместе и затем отдельно библиотеку.
И шо у меня получится?
Функции и процедуры из ДЛЛ - это понятно. Как обратится к компоненте (TSQLConnection from dbExpress) рассположенной в ДЛЛ из программы?
Заранее благодарю.
Дмитрий.


 
Петров Денис ©   (2004-05-27 16:32) [3]

Например, так:

...
uses MyDataModuleUnit;
...

// создаем модуль данных
function CreateDMInstance: TMyDataModule;
begin
 Result := TMyDataModule.Create(nil);
end;

// уничтожаем модуль данных
procedure DestroyDMInstance(MyDataModule: TMyDataModule);
begin
 MyDataModule.Free;
end;



В проекте, использующем эту DLL:

...
uses MyDataModuleUnit;
...
procedure AnyProc;
var
 MyDataModule: TMyDataModule;
...
begin
 MyDataModule := CreateDMInstance;
 try
   ...
   MyDataModule.SQLConnection.Open();
   ...
 finally
   DestroyDMInstance(MyDataModule);
 end;
end;



 
Reindeer Moss Eater ©   (2004-05-27 16:37) [4]

Толку от такого способа мало.
Потому что :
Можно было бы (так и делал) для каждого модуля компилировать свой DataModule. Но ... размер программ возрастает.

Все равно при таком способе необходимо иметь в uses проекта паскалевский юнит датамодуля.


 
DmitryZ   (2004-05-27 17:12) [5]

функции CreateDMInstance и DestroyDMInstance я могу экспортирровать из той-же самой ДЛЛ, где и ДМ расположен.
минус - я всегда должен использовать директиву uses.
Ну шож. все равно - благодарю всех за помощь.
Успехов!


 
Reindeer Moss Eater ©   (2004-05-27 17:33) [6]

Ну и зачем такая DLL?
Если то, чего она содержит полезного для тебя уже и так прикомпилировано к основному приложению?


 
DmitryZ   (2004-05-27 19:05) [7]

Разумеется что ни к чему. Но ведь ничего дельного не предложили, но хотели.
За это и благодарю :))
Успехов всем!


 
Mim1 ©   (2004-05-27 21:30) [8]

[7] DmitryZ   (27.05.04 19:05)

Рекомендую еще раз посмотреть мой ответ.



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

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

Наверх




Память: 0.48 MB
Время: 0.046 c
1-1085517113
Jih
2004-05-26 00:31
2004.06.06
Глюки Делфей


3-1084869152
It
2004-05-18 12:32
2004.06.06
Редактирование наборов данных в БД через Internet Explorer


4-1082796857
GanibalLector
2004-04-24 12:54
2004.06.06
"Пук" вместо "Пуск" :)


3-1084776869
vasiliyvz
2004-05-17 10:54
2004.06.06
DBGrid


1-1085154008
Kiloper
2004-05-21 19:40
2004.06.06
Программа для разных разрешений экрана