Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как передать в DLL , TpFIBDatabase. ????? [IB4.x, IB5.x, IB6.x, FireBird]


Alex___________ ©   (2004-02-27 10:29:00) 

===   Пишу на Delphi, БД FireBird=====
Создал DLL передаю в нее TpFIBDatabase - нет проблем ! В самой DLLине есть форма и TpFIBDataSet. Присваиваю TpFIBDataSet(у) знвчение TpFIBDatabase ....... В общем все работает до тех пор пока не пытаешся открыть TpFIBDataSet.
У кого есть опыт разработки DLL+FireBird !!! Как это все сделать?

Люди !!!Может кто то сталкивался с такой задачей !!!! Подсобите советом. А еще лучше с каким нибудь примерчиком !!!!
За рание благодарен !!


Zorik   (2004-03-02 13:57:00) [1]

С компонентами IBX(update 6.08) я делаю так: в основной проге есть IBDataBase и IBTransaction. Там же и создается подключение. А в dll есть тоже IBDatabase и скоко нужно датасетов (IBQuery IBTable) и скоко нужно IBTransaction для которих IBDatabase. Главное чтов IBDatabase которая в dll не била открита (при проектировании ее можно подключить а потом отключить). А все передается через Handle

uses IBHeader;

procedure ConnectInDLL(Handle: THandle; BaseHandle: TISC_DB_HANDLE); stdcall;
begin
 try
   Application.Handle:=Handle;
   DllForm:=TDllForm.Create(Application);
   with DllForm do
   begin
     DllDatabase.SetHandle(BaseHandle);
     ShowModal;
     DllDatabase.SetHandle(nil);
     if assigned(DllForm) then Free;
   end;
 except
   ShowMessage('Error');
 end;
end;


Brenagwynn   (2004-03-02 13:44:00) [2]

Передавай TpFIBDatabase и ТpFIBTransaction как указатели. А в DLL-ке явно преобразовывай. И не надо никаких ShareMem.


Asdor   (2004-03-02 13:22:00) [3]

Если ShareMem не поможет, то компилируй проекты (и exe и DLL) с Runtime Packages...


Alex___________   (2004-03-02 10:16:00) [4]

> Фигня, просто очередной программист забыл почитать .....
Очень смешно !! А чего же очередной программист - так и не внес ни каких глобальных разъяснений в "не прочитанный" мной вопрос ?
Все что хочешь, только не то, что надо !!!!!!!
Небольшой пример я думаю в корне переменил бы мое мировозрение !!


DrPass   (2004-03-01 21:17:00) [5]

Фигня, просто очередной программист забыл почитать Большой_Синий_Комментарий при создании проекта DLL. uses ShareMem, господа...


Виталий Панасенко   (2004-03-01 18:20:00) [6]

Подключаться надо как к удаленному серверу, с указанием IP


Alex___________   (2004-03-01 14:54:00) [7]

>у тя раннее или позднее связывание с DLL ?
Статическое !!


Petr V. Abramov   (2004-02-27 18:52:00) [8]

> Вот этого я делать не умею. Как то DLL  есть  DLL .....
 Учитесь :) А то так будете кричать "ПОМОГИТЕЕЕ !!"


Desdechado   (2004-02-27 18:41:00) [9]

у тя раннее или позднее связывание с DLL ?


Alex___________   (2004-02-27 18:35:00) [10]

ПОМОГИТЕЕЕ !!


Alex___________   (2004-02-27 15:07:00) [11]

Petr V. Abramov ©  
> TpFIBDatabase поместить в BPL и enjoy :)
Вот этого я делать не умею. Как то DLL  есть  DLL .....
Тем более, что уже DLLки есть. Просто вот с базой я с них рабоать не могу :((


Alex___________   (2004-02-27 13:23:00) [12]

Ребята !!! Сам написал прогу. Просто ехе(шник) уже имеет не слабый размер. Теперь стала делема... надо все куда то выносить. Вот выношу в DLL. Можно конечно в DLL создать новое соединение к базе - но тогда каждое окно будет работать в пределах своего соединения. Сетка ляжет в 23 секунды....
По сему надо передать текущее соединение в DLL т.е. TpFIBDatabase. Все компилится и делается в Delphi7, все в пределах одной версии. Ядро писал тоже я, и Dll тоже я пишу. Все компилиться тоже на моем компе. В разработке учавствую только я :)) И во внедрении тоже.
Мне просто нужна помощь ! Просто надо, что бы кто то привел пример как это сделать.... ПОЖАЛУЙСТА ПОМОГИТЕ !!!!!!!


Petr V. Abramov   (2004-02-27 13:23:00) [13]

TpFIBDatabase поместить в BPL и enjoy :)


Desdechado   (2004-02-27 13:11:00) [14]

бывает, если dll и exe скомпилированы с разными версиями библиотек, т.к. описания классов в dll свои


Alex___________   (2004-02-27 11:03:00) [15]

Johnmen ©  

Да я уже, и транзакции присваевал ...
Выглядело это примерно так -
У TpFIBDataSet(а) в DLL , есть своя транзакция !

TpFIBDataSet.Database := TpFIBDatabase;
ТpFIBTransaction1.DefaultDataBase := TpFIBDataSet.Database;

Всеравно выдает то недопустимое обращение к памяти по адресу, то память не может быть Read !!! В общем все, что хочеш, ток не то что надо !!!

Если все работает приши пожалуйста пример !!!!


Johnmen   (2004-02-27 10:47:00) [16]

>В общем все работает до тех пор пока не пытаешся ...

А потом что ?
И почему не передана TIBTransaction ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо