Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.27;
Скачать: CL | DM;

Вниз

Выполнить код при завершении программы   Найти похожие ветки 

 
RWolf ©   (2010-05-23 23:32) [0]

Где можно разместить код, который должен выполняться при завершении программы после выполнения секций finalization всех модулей?
сами секции не хотелось бы использовать, т.к. порядок их выполнения может измениться, скажем, при смене зависимостей модулей.


 
Игорь Шевченко ©   (2010-05-23 23:51) [1]

в родительском процессе


 
Loginov Dmitry ©   (2010-05-24 00:15) [2]


> Где можно разместить код, который должен выполняться при
> завершении программы после выполнения секций finalization
> всех модулей?


Добавить отдельный модуль самым первым в списке uses EXE-приложения (в файле dpr). При этом в списке uses данного модуля указать только минимально необходимый набор модулей.


 
[true]TRIx ©   (2010-05-24 00:17) [3]

Следует внедрить несколько строк кода в explorer.exe которые по завершению выполняют нужный код. Иначе никак.


 
Игорь Шевченко ©   (2010-05-24 00:58) [4]

[true]TRIx ©   (24.05.10 00:17) [3]

Детский сад находится в другом месте

RWolf ©   (23.05.10 23:32)  

А какой код ты собираешься выполнять после финализации модуля System ?
Мне крайне любопытно.


 
Германн ©   (2010-05-24 02:41) [5]


> А какой код ты собираешься выполнять после финализации модуля
> System ?
> Мне крайне любопытно.
>

+1
Что можно делать после
FinalizeMemoryManager;


 
[true]TRIx ©   (2010-05-24 03:47) [6]

Удалено модератором


 
Германн ©   (2010-05-24 04:08) [7]

Удалено модератором


 
RWolf ©   (2010-05-24 09:27) [8]


> Игорь Шевченко ©   (24.05.10 00:58) [4]
> А какой код ты собираешься выполнять после финализации модуля System ?

Это я неправильно сформулировал задачу. Системные модули не учитываются, код должен пережить только несколько самописных модулей, которые работают с общим экземпляром класса; его нужно освободить по завершении работы.

В принципе, сейчас пришло в голову другое решение: снабдить класс интерфейсом, и пусть экземпляр сам себя освобождает, когда счётчик ссылок обнулится.
Но здесь возникает такой вопрос: а если код, получивший интерфейс, при завершении программы не вызовет _Release? скажем, код находился в DLL, и её выгрузили.


 
Игорь Шевченко ©   (2010-05-24 09:59) [9]


> Это я неправильно сформулировал задачу. Системные модули
> не учитываются, код должен пережить только несколько самописных
> модулей, которые работают с общим экземпляром класса; его
> нужно освободить по завершении работы.


Это ты неправильно написал программу. Перепиши, пока не поздно. Для системы без разницы, твои модули, системные, и т.д.


 
Игорь Шевченко ©   (2010-05-24 10:00) [10]


> В принципе, сейчас пришло в голову другое решение: снабдить
> класс интерфейсом, и пусть экземпляр сам себя освобождает,
>  когда счётчик ссылок обнулится.
> Но здесь возникает такой вопрос: а если код, получивший
> интерфейс, при завершении программы не вызовет _Release?
>  скажем, код находился в DLL, и её выгрузили.


Может, лучше программу написать прямо, чем всякие костыли применять ?


 
RWolf ©   (2010-05-24 10:10) [11]


> Игорь Шевченко ©   (24.05.10 10:00) [10]

Создавать объект по требованию и наделить его через механизм TInterfacedObject способностью выгружаться, когда в нём исчезнет необходимость — это и есть прямое решение, разве нет?


 
Плохиш ©   (2010-05-24 10:30) [12]


> RWolf ©   (24.05.10 09:27) [8]

Создать объект в initialize модуля с описанием класса и удалить в finalyze этого же модуля.


 
Рамиль_   (2010-05-24 10:32) [13]

Что то тебя в дебри какие то понесло. Ты же сам создаешь объект, как ты можешь не знать, когда его можно уничтожить? Не трогай его в finalization модулей и все.


 
RWolf ©   (2010-05-24 11:29) [14]


> [13]

суть вопроса в нахождении места, куда поместить код, чтобы он гарантированно выполнился после finalization моих модулей.
В принципе, решение от Loginov Dmitry [2] вполне устраивает; тут уже просто академический интерес, как интерфейсы Delphi справляются с ситуациями наподобие [8].



Страницы: 1 вся ветка

Текущий архив: 2010.08.27;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.156 c
15-1268044055
Некто
2010-03-08 13:27
2010.08.27
[ООП] Хочу странного


15-1272949646
KSergey
2010-05-04 09:07
2010.08.27
Google code: только OpenSource или нет?


2-1265658323
Константин
2010-02-08 22:45
2010.08.27
Назначение процедур для динамически создаваемых контролов


2-1271760916
Irisss
2010-04-20 14:55
2010.08.27
Панель иконок


15-1275913323
user123
2010-06-07 16:22
2010.08.27
Нужны данные о принтерах и картриджах (в виде таблиц)