![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
использование dll в приложениях с компонентами IBX [D6, Firebird]
zorik © (2006-06-06 10:15:00)Я уже неоднократно задавал этот вопрос, но так и не получил утвердительного ответа. Планируется написание большого проэкта с кучей разнообразных расчетов, импортов-экспортов и т.д. Имеет смысл распихать функции по групах по отдельных библиотеках. Допустим на главном модуле есть компонент TIBDatabase и TIBQuery. В каждой dll-ке должна быть компонент TIBQuery, который был бы detail для TIBQuery главного модуля. В книжке, правда для BDE, видел пример, где в dll передается handle database.
Подкиньте ссылки не эту тему. Не о dll в целом. а именно примеры работы с базами данных в dll
ANB (2006-06-07 11:36:00) [1]
> Ну можно их вообще в эксэле делать, с подключением к базе
> прямо из него.
Можно, но и вариант автора тоже неплох, т.к. не требует таскания с программой навороченных шаблонов экселя.
mr.il (2006-06-07 10:48:00) [2]
> А насчет отчетов, я так и не понял как их вынести в отдельный
> файл.
Ну можно их вообще в эксэле делать, с подключением к базе прямо из него.
zorik (2006-06-07 09:49:00) [3]Ну что ж, спасибо. А то думал, что настоящий ламер. Надо просто аккуратно все писать и коментировать. Просто панический страх перед "большими" проектами. :-)
> С отчетами например понятно зачем в отдельный файл выносить,
> можно их поправить не меняя собственно программу.
А насчет отчетов, я так и не понял как их вынести в отдельный файл. Не использую никаких компонентов для отчетов. Все перекидываю в ексель. Наверное имелись ввиду всякого рода "репорты".
Alex_A_V (2006-06-06 19:24:00) [4]А зачем так вообще делать? Разве не проще скопировать один большой экзешник, чем много маленьких дллек, да еще надо отслеживать где какие заменил, с одним файлом это легче делать. С отчетами например понятно зачем в отдельный файл выносить, можно их поправить не меняя собственно программу. А если поправил что-то в длл, то какая разница маленкую длл заменить или большой ехе? Да и то большой-то понятие относительное.
ANB (2006-06-06 15:23:00) [5]
> zorik © (06.06.06 11:17) [2]
Имхо - я как раз люблю большие экзешники.
Но если очень надо, то :
1. Создавать не DLL, а пакеты
2. Приложение компилять с использованием рантаймовых пакетов (и тащить всю эту кучу bpl на каждого клиента).
3. При вызове функции пакета передавать ей адрес тех объектов приложения, с которыми она должна работать. Т.е. IBDataBase как минимум.
zorik (2006-06-06 11:17:00) [6]А как тогда поступать? Как люди поступают? Около 100 таблиц в БД, каждый день нужно что-то подправлять, изменять. Графики, расчеты и т.д. Начал проэктировать новую базу взамен старой. Хочется и приложение нормальное написать. Лепить все в одну exe-шку, пусть даже с очень грамотно раскидаными функциями по модулях, и использованием репозитория для типичных форм справочников, хотя и хорошее, но не очень эфективное решение.
А то что козни есть знаю. Пробывал.Ошибки IBUpdate не обрабатываються. Системное сообщение выдается.
Подскажите, кто делал большие проэкты как поступить!
DrPass (2006-06-06 10:57:00) [7]Хочешь толковый совет? Не делай так. Граблей с утечками памяти, кривой обработкой событий и т.д. ты просто не разгребешь. Компоненты IBX без костылей не предназначены для такой работы... хотя если тебе слишком хочется, то передавать нужно не хендл, а указатель на саму IBDatabase. И, конечно, не забывать про sharemem. Но если твое приложение хоть чуть-чуть сложнее, чем "выбрать/вставить/удалить", то лучше с этим не связываться