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

Вниз

Как передать в DLL , TpFIBDatabase. ?????   Найти похожие ветки 

 
Alex___________   (2004-02-27 10:29) [0]

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

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


 
Johnmen ©   (2004-02-27 10:47) [1]

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

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


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

Johnmen ©  

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

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

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

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


 
Desdechado ©   (2004-02-27 13:11) [3]

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


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

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


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

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


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

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


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

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


 
Desdechado ©   (2004-02-27 18:41) [8]

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


 
Petr V. Abramov ©   (2004-02-27 18:52) [9]

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


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

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


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

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


 
DrPass ©   (2004-03-01 21:17) [12]

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


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

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


 
Asdor ©   (2004-03-02 13:22) [14]

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


 
Brenagwynn ©   (2004-03-02 13:44) [15]

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


 
Zorik ©   (2004-03-02 13:57) [16]

С компонентами 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;



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

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

Наверх




Память: 0.5 MB
Время: 0.028 c
4-1074539580
Arr'acctur
2004-01-19 22:13
2004.04.04
StdOut


8-1070365735
Denis555
2003-12-02 14:48
2004.04.04
Медлительность TImage


11-1059477443
avakss
2003-07-29 15:17
2004.04.04
KOL+отключить показ программы в CTRL+ALT+DEL


6-1074752837
Hooch
2004-01-22 09:27
2004.04.04
кодировка поля Subject в письме


1-1079594675
Billy
2004-03-18 10:24
2004.04.04
Как узнать существует ли данная форма???