![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как передать в 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 ?