Форум: "Основная";
Текущий архив: 2004.06.06;
Скачать: [xml.tar.bz2];
Вниз[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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.046 c