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

Вниз

TTable в Exe и Dll   Найти похожие ветки 

 
Alex Marmuzevich   (2002-09-10 23:24) [0]

В принципе проблема возникла в Билдере (5), но чувствую, что ноги все-равно растут из Делфи. Есть проект, работающий с Oracle 7.3. Взаимодействие через ODBC драйвер. Для связи используется один (на проект) TDatabase. Все работает. Захотел несколько форм засунуть в DLL. При попытке открыть таблицу (DatabaseName == DatabaseName TDatabase компонента) с DLL формы появляется окно с логином... Вопрос как "расшарить" подключение, созданное в одном модуле (EXE или DLL) с другим. Ну не хочется мне иметь много подключений к базе с одного клиента (жаба душит).
Кто поможет?


 
Alex Y ©   (2002-09-11 04:39) [1]

В OnShow формы Database.LoginPrompt := False


 
Alex Marmuzevich   (2002-09-11 10:28) [2]

И что. Таблица из DLL возмется за ум и будет использовать подключение от TDatabase exe файла? Сомневаюсь.


 
REA   (2002-09-11 10:42) [3]

По идее такой трюк возможен (т.к. BDE использует shared memory), но забыл как реализовть. Ищи. Посмотри свойство типа share handle в DB компоненте на всякий случай. Сессия должна быть с одним имененем. Можно попробовать найти DB по сессии и присвоить Handle другому компоненту.


 
Desdechado ©   (2002-09-11 10:58) [4]

попробуй не использоветь имя, а передавать в DLL указатель на Database в программе


 
REA   (2002-09-11 11:10) [5]

Desdechado: Не советую - придется использовать sharemem и т.п. и вообще компоненты плохо передаются в DLL и обратно, хотя работать возможно и будет.


 
Alex Marmuzevich   (2002-09-11 12:07) [6]

Я тут уже и TDatabase открытый в DLL передавал, и share handel неоднократно трогал. И сессии пытался одинаковыми делать. Только толку не добился.


 
ermserg   (2002-09-11 13:11) [7]

Vot eto v DLL:
--------------------
procedure Initialise(Connection : TADOConnection;
Settings : TStringList;
var Plugins : TStringList;
var DLL_ID : integer); export; StdCall;
begin
ADOConnection := Connection;
DataModulefm.QryGeneric1.Connection := ADOConnection;
...
--------------------
vso rabotayet otlichno. ADOConnection - global v DLL. Ti ne zabivayesh peredavat Application v DLL? Mozhet vso delo v etom?


 
Alex Marmuzevich   (2002-09-11 20:31) [8]

>Ti ne zabivayesh peredavat Application v DLL? Mozhet vso delo v >etom?
Куда? Чтобы создавать формы типа TForm.Create ( Application )????
Или что другое?


 
ermserg   (2002-09-11 20:39) [9]

Kakiye u teba formi v DLL? fsNormal ili fsMDIChild?
esli MDI, poprobuy eto: http://www.gnomehome.demon.nl/uddf/pages/dll.htm#dll3


 
Alex Marmuzevich   (2002-09-12 11:33) [10]

Все формы fsNormal. Вызываются через ShowModal.


 
REA   (2002-09-12 11:37) [11]

В DLL полезно передать Application.Handle и присвоить его Apllication.Handle самой DLL где-нибудь в начале - тогда будут болле правильно создаваться окна (с нужным parent).
Рекомендую использовать sharemem и подключать rtl (bpl) packages, если вы все же решили передать указатель на класс.
Ну и делать rebuid всего при смене версии компилятора и компонент тогда уж.


 
REA   (2002-09-12 11:41) [12]

PS: в принципе тогда уж можно и указатель на сам модуль данных передать со всеми базами и таблицами - тоже работает, но не забывать делать rebuid всего при изменении структур и т.п.
Если не хочется включать код всего модуля в DLL можно попытаться описать идентичный класс с абстрактными методами.


 
Alex Marmuzevich   (2002-09-12 21:19) [13]

Передача объектов - это то, на что я никогда не пойду, так как завтра напишут кусок на VC++ и что тогда? К базам, понятно, это не относится, но принцип дороже всего.



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

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

Наверх




Память: 0.49 MB
Время: 0.018 c
1-8061
Борис
2002-09-23 09:20
2002.10.03
Не работает SaveDialog1.Execute. Help


14-8149
Bboy
2002-09-09 12:09
2002.10.03
А есть ли в XP папка, равная папке SendTo в Win9X???


1-8025
kex86
2002-09-20 02:11
2002.10.03
ImageIndex ы


14-8111
DeepProg
2002-09-06 17:20
2002.10.03
Delphi studing


4-8215
Lamer86
2002-08-15 09:13
2002.10.03
Scrollbar