Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.064 c
15-1264887010
Юрий
2010-01-31 00:30
2010.08.27
С днем рождения ! 31 января 2010 воскресенье


2-1272519215
wwictor
2010-04-29 09:33
2010.08.27
Как подключится к серверу mySQL и добавить запись?


15-1264628812
Алексей111
2010-01-28 00:46
2010.08.27
пуассоновский поток


2-1270706035
novai
2010-04-08 09:53
2010.08.27
Использование Format


15-1265835502
Petr V. Abramov
2010-02-10 23:58
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский