Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.03.2013, 07:52   #1
WhiskasTM
Подтвердите свой е-майл
 
Регистрация: 11.04.2012
Сообщений: 85
По умолчанию Крах при закрытии приложения, кривой подсчет ссылок в плагинах, импортирующие интерфейс из общей статической dll

Есть интерфейсный ини-ридер в виде dll. Вот так он вызывается:
Код:
IINI = interface
....

function SE_IINI(const Filename:string):IINI;safecall; external 'IntfINI.dll';
Приложение его использует, подключаемые плагины используют эту функцию, все её используют. Но почему-то в каждом плагине.dll приходится дописывать _AddRef, иначе при закрытии приложения вываливается ошибка.

Короче, это типа так и задумано, что в каждом плагине теперь нужно принудительно звать _AddRef? Выходит, подсчет ссылок ведется в каждом адресном пространстве отдельно?

По какому тагу вообще такую инфу можно найти. Спасибо))
WhiskasTM вне форума Ответить с цитированием
Старый 09.03.2013, 12:17   #2
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,883
По умолчанию

Имхо, стоит не аддрефить, а
ссылка_на_фейс := nil;
После окончания работы с ним, это такая дельфийская плюшка с нелокальными областями видимости интерфейсных ссылок.
phomm вне форума Ответить с цитированием
Старый 09.03.2013, 13:06   #3
WhiskasTM
Подтвердите свой е-майл
 
Регистрация: 11.04.2012
Сообщений: 85
По умолчанию

Цитата:
Сообщение от phomm Посмотреть сообщение
ссылка_на_фейс := nil;
Эту запись пришлось ставить совершенно на другой интерфейс). Вообщем все addref убрал, и все нормально теперь. Спасибо.

зы
Я и не знал, что после строки Application.Run идет код уничтожения. Там обнулил.
Код:
prorgram MainApp;

begin
  Application.Initialize;
  Init;
  .....
  Application.MainFormOnTaskbar := True;
  Application.Run;
  FlE:=nil; //левый фейс
end.
WhiskasTM вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание компонента, создающего анимацию вращения формы приложения при открытии и закрытии на Delphi Zireael Помощь студентам 2 23.10.2011 15:38
Проблемы с шаблоном при закрытии приложения klimov0512 Microsoft Office Excel 0 06.09.2010 19:55
Крах при выгрузке DLL prizrak1390 Общие вопросы Delphi 15 11.09.2009 19:08
Запрос при закрытии приложения? Inara Общие вопросы Delphi 2 26.03.2009 20:00
запись в файл при закрытии в приложения SERG1980 Общие вопросы Delphi 5 14.11.2007 08:08