evle

1 + int rand(100); | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Понадобилось сделать логирование некоторых операций в программе. Сделал класс TLogger с соответствующими методами. Переменную объявил в дата-модуле, создаю объект в начале dpr, освобождаю последней строчкой: Код: begin Log := TLogger.Create; Log.FileName := 'c:\PGS.log'; Application.Initialize; Application.OnException := Log.ExceptionCatcher; Application.CreateForm(TDataModulePer, DataModulePer); *** Application.Run; Log.Save; Log.Free; end. | Логом пользуются внутри дата-модуля, в частности, записывается DataModuleDestroy. В результате получается, что DataModuleDestroy генерируется уже после строчки Log.Free, что заканчивается AccessViolation'ом. Вопрос: как дата-модуль оказывается живым в время и как это обработать?
---------- For every complex problem, there is a solution that is simple, neat, and wrong. |
|