|
Вопрос # 1 195/ вопрос открыт / |
|
Здравствуйте, эксперты! Проблема заключается в следующем, хочу написать приложение БД изпользуя длл. В длл есть форма, на ней компонент запроса, грид, датасоурс. при вызове этой формы из приложения в качестве параметра передаю датабаз. Ошибку выдает если вызвать форму более двух раз, при закрытии приложения. Что делать? Может я как то неправильно передаю датабаз?
 |
Вопрос задал: Храмцов Денис (статус: 1-ый класс)
Вопрос отправлен: 13 декабря 2007, 15:46
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: min@y™
Передавать в/из DLL такие вещи как объекты, pascal-строки, динамические массивы есть занятие неблагодарное и ведёт к раку мозгов. Борландовский менеджер памяти вспучивает от таких вещей. Но есть решение - использовать интерфейсы (если нельзя совсем отказаться от DLL). В инете статей по этому поводу полно, но могу прислать и по почте (у меня обширная база знаний по Delphi и С++).
 |
Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 14 декабря 2007, 08:39
|
Мини-форум вопроса
Всего сообщений: 3; последнее сообщение — 14 декабря 2007, 01:04; участников в обсуждении: 3.
|
Feniks (статус: Бакалавр), 13 декабря 2007, 16:04 [#1]:
Не давно подымалось уже тема по работе с DLL-ками. Ищите Поиском на этом портале. Были неоднократные ответы с сылками на статьи. И не ленитесь приводить примеры ваших кодов, мы ведь не телепаты.
|
|
Косолапов Дмитрий Юрьевич (статус: 8-ой класс), 13 декабря 2007, 16:14 [#2]:
Боюсь, что ошибка принципиальная - в проекте. Зачем в dll всю эту страсть запихивать (формы, датасурсы и прочее)?
|
|
Вадим К (статус: Академик), 14 декабря 2007, 01:04 [#3]:
Если бы хотя бы написали что за база. Но и без этого видно грубую ошибку.
Никогда не передавайте в длл ссылку на объект! Даже если вы подключили ShareMem
Просто у них разные RTTI. Дальше рассказывать бессмысленно.
Если вы не понимаете процессов, как всё это происходит, лучше не беритесь. Будете биться лбом и безтолку.
Как вариант, лучше создать bpl (пакет). Это таже длл, но оформленная по специальным правилам компиляторм.
И вообще, формы в длл - это причина многих ошибок.
Галочка "подтверждения прочтения" - вселенское зло.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|