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

Вниз

Странное поведение моей программы   Найти похожие ветки 

 
тихий вовочка ©   (2005-05-25 19:23) [0]

Я тут пишу прогу. В ней есть одна большая глобальная переменная. Назовем ее kvadroData. Она берет на себя всю работу с источниками данных, что позволяет прикреплять любой интерфейс программы не трогая логику. Этот объект-переменную я создаю динамически - засунул в WinMain. Создается она до создания форм. И удаляется после Application Run. Стал ловить необяснимое исключение. При трассировке по шагам выяснилось, что каким-то чудом уже после выхода из WinMain (честное слово, шаг - и ты за операторными скобками) вызывается метод Resize одной из форм. А так как в этом методе идет обращение к моему объекту - я ловлю Exception. Почему такое происходит? Я конечно могу добавить проверку на существование объекта, но хочется понять поведение программы.


 
Axis_of_Evil ©   (2005-05-25 19:32) [1]

>В ней есть одна большая глобальная переменная
не рекоментуется
>на существование объекта, но хочется понять поведение программы.
может дело в ОС?


 
старый маразматикЪ   (2005-05-25 19:35) [2]

ниче не понял... хто такой WinMain? попробуй создавать свой объект в
initialization
и удалять в
finalization


 
старый маразматикЪ   (2005-05-25 19:39) [3]

или прям в файле проекта, который dpr. прям там и создавай свой объект перед всей лабудой.


> Axis_of_Evil ©   (25.05.05 19:32) [1]
> не рекоментуется

да ну! а мне такие переменные вовсе не мешают. иногда даже помогают. смотря для чего


 
wicked ©   (2005-05-25 19:47) [4]

> тихий вовочка ©
имхо проблема в том, что формы убиваются не при выходе из WinMain, а немного позже, при "деинициализации" Application... решений море, например, об-NULL-ять переменную kvadroData, соответственно, при всех обращениях к kvadroData проверяем её на NULL...


 
Axis_of_Evil ©   (2005-05-25 19:50) [5]

>ниче не понял... хто такой WinMain?
чую, речь идет о C++


 
ЮЮ ©   (2005-05-26 05:09) [6]

>я ловлю Exception. Почему такое происходит? Я конечно могу добавить проверку на существование объекта, но хочется понять поведение программы.

Поймав Exception, нажми Ok, и посмотри Call Stack (при включенном Use Debug DCUs) и вся логика станет наглядна.


 
Юрий Зотов ©   (2005-05-26 06:24) [7]

> Axis_of_Evil ©   (25.05.05 19:32) [1]
>> В ней есть одна большая глобальная переменная
> не рекоментуется

Application, Screen, Printer, Mouse... и т.д.

И ничего страшного.



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

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

Наверх




Память: 0.48 MB
Время: 0.035 c
3-1115812937
Юленька
2005-05-11 16:02
2005.06.14
Удаление столбцов


3-1115273353
Mr.F
2005-05-05 10:09
2005.06.14
Построение дерева из базы данных


14-1116945369
DiamondShark
2005-05-24 18:36
2005.06.14
Лучше день потерять, потом за пять минут долететь?


11-1099342586
Yasha
2004-11-01 23:56
2005.06.14
SystemDcu Replacement For Delphi 7 system.pas not found


14-1117192947
syte_ser78
2005-05-27 15:22
2005.06.14
Блин. Умеют же люди правильно излагать свою мысль