![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Использование DLL для коннекта с БД
Евгений © (2003-11-26 10:51:00)
Подскажите плиз, можно ли DataModule (предварительно настроив соединение) засунуть в DLL, а потом из основной формы подцеплять DBGrid через эту библиотеку? Если да, то как?
Michail Dalakov (2003-11-26 19:49:00) [1]
По F1 можно найти все необходимое, по крайней мере я дополнительными источниками не пользовался,
ну пакеты компонентов наверняка приходилось писать или хотя-бы
устанавливать.
Евгений (2003-11-26 19:39:00) [2]
О чудо!!! Она заработала. Спасибо Vlad. Спасибо всем.
Вопрос Michail Dalakov: где можно надыбать инфу о так хваленной BPL (желательно с примерами)? Я же говорю, что плохо знаком с этой "штукой", вот бы познакомиться по ближе, чтобы самому оценить все "за" и "против"
Michail Dalakov (2003-11-26 19:21:00) [3]
Люди, если вы будете создавть объекты типа TIBTable и будете передавать указатели на объекты, то если главное приложение пишется не на Delphi, то к чему вы будете их кастовать, оно 100% не будет знать о классе TIBTable, если же главное приложение на Delphi, то зачем вам DLL, пишите BPL - это таже библиотека.
Vlad (2003-11-26 19:01:00) [4]
Ясно. В DLL не создаешь DataModule.
function ex(): TIBTable;
begin
DataModule1:=TDataModule1.Create(nil);
result:=DataModule1.IBTable1;
end;
Michail Dalakov (2003-11-26 19:01:00) [5]
Нет смысла писать DLL вместо BPL если ты будешь использовать ее из приложений написанных на Delphi. Ты получаешь только ограничения на типы данных ничего не имея взамен
Евгений (2003-11-26 18:55:00) [6]
Дословно текс ошибки:
Access violation at adress 00396CD7 in module "MyDLL.DLL". Read of adress 00000060.
Michail Dalakov (2003-11-26 18:54:00) [7]
To [10]
Если ты решил все таки DLL, то используй указатели в передаваемых
и возвращаемых значениях.
В приведенном коде: ф-я ex() возвращает класс и это присваивается
DataSource1.DataSet
Vlad (2003-11-26 18:48:00) [8]
> При клике, вылазиет ошибка. Здесь что-то не правильно?
Текст ошибки ?
Евгений (2003-11-26 18:46:00) [9]
Для Michail Dalakov. Ну с BPL, я еще не толком не работал, а что-то новое всегда страшно. Кроме того не факт, что работа будет из Делфи, каждый программист работая над программой надеется на дальнейшее ее развитие. Например на использование DLL в MSOffice, расширения при помощи ActiveX и т.д. А вообще тема BPL меня заинтересовала.
Евгений (2003-11-26 18:32:00) [10]
Настроил соединение в DLL MyDLL.dll (TIBDataBase, TIBTransaction, TIBTable) пишу функцию:
functionex(): TIBTable;
begin
result:=DataModule1.IBTable1;
end;
exports
ex name"ex";
На форму добавил: TDBGrid, TDataSource, TButton.
functionex(): TIBTable; external"MyDLL.DLL";
Обработка клика на кнопке
Begin
DataSource1.DataSet:=ex();
End;
При клике, вылазиет ошибка. Здесь что-то не правильно?
Michail Dalakov (2003-11-26 17:48:00) [11]
2[8]
А зачем вместо BPL использовать DLL ecли работа с библиотекой будет производиться из приложения написанного на Delphi?
me (2003-11-26 17:33:00) [12]
Нужно в DLL создавать DataModule, поместить в него компонент TDataBase и подставить в ее handle заначение handle от TDataBase из DataModule главной апликации (передать в DLL). В результате из DLL используется уже открытое соединение с базой.
me (2003-11-26 17:32:00) [13]
Нужно в DLL создавать DataModule и подставить его handle заначение handle от DataModule из главной апликации (передать в DLL). В результате из DLL используется уже открытое соединение с базой.
Michail Dalakov (2003-11-26 17:08:00) [14]
В BPL ты можешь без ограничений пользоваться всеми классами и типами данных Delphi и использовать их в параметрах функций, которые ты будешь экспортировать, ну конечно подразумевается,
что экспортируемые функции будут использоваться в других приложениях Delphi.
Евгений (2003-11-26 16:39:00) [15]
А в чем собственно приемущество использование BPL?
Michail Dalakov (2003-11-26 16:05:00) [16]
2Евгений
Для этих целей лучше использовать BPL.
Vlad (2003-11-26 15:35:00) [17]
Можно в DLL создавать DataModule и открывать собственное соединение с базой.
А что такое подцеплять грид через эту библиотеку - неясно.
Если ты имеешь ввиду набор данных из библиотеки подцепить к гриду, то сделай ф-цию в DLL, которая будет возвращать ссылку на DataSet (я так не делал, но думаю будет работать), а в основной форме цепляй динамически к DataSource грида.
Sandman25 (2003-11-26 15:31:00) [18]
Я не делал такого с BDE, но для DBExpress передавал в DLL TSQLConnection (аналог TDatabase), а в самой DLL это переданное значение использовал в компонентах доступа к БД.
Евгений (2003-11-26 15:17:00) [19]
Неужели никто не знает? Помолите пожалуйста.