C++Builder
  Начало   Форум   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: динамическая работа с компонентами  (Прочитано 1299 раз)
Sergey1985
Участник


Сказали спасибо: +8/-1
Offline

Сообщений: 310


динамическая работа с компонентами
« : 01 Сентябрь 2012, 10:30:58 »

Следующий вопрос для любителей экономить память. (Но вовсе не для страдающих амнезией)))))))))))
Динамически создаю компонент вот так
TPanel *p;
p = new TPanel(Form1);
p->Parent=Form1;
Ну и так далее...

потом на этой панельки кнопочку
TButton *b;
b = new TButton(Form1);
b->Parent=Panel;
b->
b->
......

потом хочу все это удалить
delete p;   delete *p;  p->Destroying(); .....   В общем как бы я не пытался  у меня постоянно какая то абстрактная ошибка выскакивает. Покажите мне плиз  как мистера Пропера вызывать нужно. то есть как память от ненужного уже в таких случаях чистить.
Записан
gumi250
Участник


Сказали спасибо: +33/-1
Offline

Сообщений: 254


Re: динамическая работа с компонентами
« Ответ #1 : 01 Сентябрь 2012, 10:54:36 »

по идее delete p достаточно.
delete *p - это вообще что делать должно?
Я предпочитаю придерживаться принципа, что удаляет тот кто создает. Поэтому я бы написал так:
Код
delete b;
delete p;
Записан
volvo877
Глобальный модератор


Сказали спасибо: +736/-1
Offline

Сообщений: 891


Re: динамическая работа с компонентами
« Ответ #2 : 01 Сентябрь 2012, 13:50:30 »

Цитировать
Я предпочитаю придерживаться принципа, что удаляет тот кто создает.
Зачем этого принципа придерживаться там, где реализован принцип "Владелец ответственен за удаление того, чем он владеет"? У кнопки кто владелец? Правильно, панель. Вот при удалении панели все, что на ней находится пускай она сама и удаляет. Либо не надо назначать владельца при создании компонента, и тогда удалять вручную.

Цитировать
В общем как бы я не пытался  у меня постоянно какая то абстрактная ошибка выскакивает
Код или описание у этой "абстрактной" ошибки есть?

P.S. Ах, у Sergey1985 владелец кнопки - форма? Тогда что ж он хочет? Parent-ом у кнопки была панель, она удалилась, отображать кнопку негде, а кнопка всё еще существует, ее владелец - форма - не удален. И что делать бедной кнопке с владельцем но без родителя?

Sergey1985, разницу Owner/Parent хорошо понимаешь? Почитай
« Последнее редактирование: 01 Сентябрь 2012, 13:56:28 от volvo877 » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  




....

Powered by SMF 1.1.21 | SMF © 2025, Simple Machines
Страница сгенерирована за 0.082 секунд. Запросов: 22.