Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.10.03;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.006 c
7-8209
AlexRya
2002-07-22 23:16
2002.10.03
Снова о сокрытии процессов


3-7824
REA
2002-09-11 10:52
2002.10.03
Агрегатные поля


1-7920
Vdovin-AV@yandex.ru
2002-09-20 13:51
2002.10.03
Дабл Клик в Memo


1-7963
Бильврёст
2002-09-24 10:11
2002.10.03
Проблемы с рекурсией и возвратом управления в нужную точку.


1-7901
maxuscz
2002-09-22 21:36
2002.10.03
Ищу програмистов





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский