Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 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

Feniks (статус: Бакалавр), 13 декабря 2007, 16:04 [#1]:

Не давно подымалось уже тема по работе с DLL-ками. Ищите Поиском на этом портале. Были неоднократные ответы с сылками на статьи. И не ленитесь приводить примеры ваших кодов, мы ведь не телепаты. ;-)
Косолапов Дмитрий Юрьевич

Косолапов Дмитрий Юрьевич (статус: 8-ой класс), 13 декабря 2007, 16:14 [#2]:

Боюсь, что ошибка принципиальная - в проекте. Зачем в dll всю эту страсть запихивать (формы, датасурсы и прочее)?
Вадим К

Вадим К (статус: Академик), 14 декабря 2007, 01:04 [#3]:

Если бы хотя бы написали что за база. Но и без этого видно грубую ошибку.
Никогда не передавайте в длл ссылку на объект! Даже если вы подключили ShareMem
Просто у них разные RTTI. Дальше рассказывать бессмысленно.
Если вы не понимаете процессов, как всё это происходит, лучше не беритесь. Будете биться лбом и безтолку.

Как вариант, лучше создать bpl (пакет). Это таже длл, но оформленная по специальным правилам компиляторм.

И вообще, формы в длл - это причина многих ошибок.
Галочка "подтверждения прочтения" - вселенское зло.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:58
Выполнено за 0.02 сек.