Главная страница
    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.48 MB
Время: 0.057 c
15-1271132872
oldman
2010-04-13 08:27
2010.08.27
«РИФ+КИБ 2010»: общая информация


2-1270195945
Lowlander
2010-04-02 12:12
2010.08.27
Маска ввода email


3-1242645912
Юрий Зотов
2009-05-18 15:25
2010.08.27
Update одной таблицы по условию из другой таблицы


15-1264341586
Kolan
2010-01-24 16:59
2010.08.27
Исходники DMClient а доступны для всех желающих


15-1265662957
Kerk
2010-02-09 00:02
2010.08.27
Социальная реклама





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский