Главная страница
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.094 c
2-1268812490
Вася
2010-03-17 10:54
2010.08.27
Как узнать, существует ли компонент?


15-1264627806
Юрий
2010-01-28 00:30
2010.08.27
С днем рождения ! 28 января 2010 четверг


15-1266044160
AlexDan
2010-02-13 09:56
2010.08.27
Спрятать php файл


15-1274747389
Юрий
2010-05-25 04:29
2010.08.27
С днем рождения ! 25 мая 2010 вторник


2-1272383481
Lyonux
2010-04-27 19:51
2010.08.27
Шифрация текста по таблице Виженера.