Форум: "Базы";
Текущий архив: 2004.04.04;
Скачать: [xml.tar.bz2];
ВнизКак передать в 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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.036 c