Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вопрос по созданию/уничтожению форм


Страницы:   1 2

novill ©   (2007-03-13 13:39:00) 

При вызове форма создается, на событие OnClose стоит  Action:=caFree
Однако, указатель остается <>nil.
Если сразу после закрытия формы создать другую, то указатель первой формы показывает на новый объект.

Как проще всего корректно обработать эту ситуацию. Форма и уничтожается в разных местах.


Desdechado   (2007-03-13 15:37:00) [21]

> Проблема в том что после уничтожения объекта указатель не обнуляется,
> и в итоге может указывать на другой объект.
Он может указывать и на пустой участок памяти, и на середину другого объекта.
Указатель - это вещь, которая указывает на то, на что ты ему прикажешь. Если тебе нужно контролировать его указание, то разберись с логикой программы, а не лепи отмазки логика не моя, и местами не логика


Сергей М.   (2007-03-13 15:27:00) [22]


> novill ©   (13.03.07 15:24) [12]


> после уничтожения объекта указатель не обнуляется


Ну тебе же "черным по-русскому" сказали - на один и тот же объект может существовать кучауказателей !!!

Ты в КАКОМ КОНКРЕТНО из них возжелал при этом видеть nil ?!


novill   (2007-03-13 15:24:00) [23]

> [11] Рамиль ©   (13.03.07 15:16)
это итак ясно. Проблема в том что после уничтожения объекта указатель не обнуляется, и в итоге может указывать на другой объект.


> По логике программы должно быть четко ясно, где форма еще
> существует, а где уже нет. Если же у тебя не ясно, значит,
> надо менять эту самую логику.

Увы, логика не моя, и местами не логика :(


Рамиль   (2007-03-13 15:16:00) [24]

На ОБЪЕКТ может указывать сколько угодно указателей. При присвоении любому из них nil остальные указатели не меняются.


Desdechado   (2007-03-13 15:14:00) [25]

> В какой же момент приравнивать указатель к  nil, если формы вызывается по Show
Как вызывается, фиолетово. Указатель на нее ведь есть, если ты его не потерял (такое тоже бывает).
По логике программы должно быть четко ясно, где форма еще существует, а где уже нет. Если же у тебя не ясно, значит, надо менять эту самую логику.


Рамиль   (2007-03-13 15:14:00) [26]

Если ты присвоиш Self := nil указатель FormX не изменится.


Сергей М.   (2007-03-13 15:13:00) [27]

Конечно могу)


novill   (2007-03-13 15:09:00) [28]

> [6] Сергей М. ©   (13.03.07 15:04)
А просто помочь ты можешь?


Сергей М.   (2007-03-13 15:04:00) [29]


> да я понял уже


Да ничертаты не понял.


novill   (2007-03-13 15:01:00) [30]

да я понял уже :(
обидно что нельзя Self:=nil написать


Сергей М.   (2007-03-13 14:51:00) [31]


> В какой же момент приравнивать указатель к  nil,


Какой конкретно указатель ?)

Вот в чем вопрос-то ..

Репу-то чеши ?)


novill   (2007-03-13 14:42:00) [32]

нет, не будет :(

В какой же момент приравнивать указатель к  nil, если формы вызывается по Show


novill   (2007-03-13 14:29:00) [33]

Ничего удивительного :)

На OnDestroy вставить FormX:=nil корректно будет?


Сергей М.   (2007-03-13 13:45:00) [34]


> Однако, указатель остается <>nil.


Сделай его nil.

Что тому мешает ?


> Если сразу после закрытия формы создать другую, то указатель
> первой формы показывает на новый объект


Что в том удивительного ?

Что вообще ты видишь удивительного в том, что на один и тот же объект может существовать множество указателей ?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо