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

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

Использование 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]

Неужели никто не знает? Помолите пожалуйста.


Наверх

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