1 | ||||||
Удаление динамически созданных объектов19.01.2014, 17:44. Показов 1998. Ответов 18
Метки нет (Все метки)
создаю объекты.
удаляю
ошибок не выдает. Подскажите в чем проблема.
0
|
19.01.2014, 17:44 | |
Ответы с готовыми решениями:
18
События динамически созданных объектов Создание событий для динамически созданных объектов Удаление динамически созданных компонентов Удаление динамически созданных элементов |
192 / 128 / 52
Регистрация: 19.01.2010
Сообщений: 518
|
|
19.01.2014, 18:27 | 2 |
Код создания объектов в студию
0
|
19.01.2014, 20:22 [ТС] | 3 | |||||
0
|
Пишу на Delphi...иногда
|
|
20.01.2014, 00:27 | 6 |
а разве суть удаления не в том, чтобы создав n объектов и удалить столько же n объектов? судя по циклам процедур создания и удаления создается и удаляется разное количество объектов
если объекты созданы в дизайн тайме, то при создании остальных объектов, при заполнении ими массива, необходимо начинать заполнять массив также со значения 2, предварительно засунув созданные объекты в массив, либо при уничтожении цикл также гнать до 0
а в чем смысл массива и даже не одного, а нескольких?
0
|
20.01.2014, 00:36 [ТС] | 7 | |||||
да и в другом вопрос
0
|
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,252
|
|
20.01.2014, 01:25 | 8 |
Если бы сначала не было
, тогда можно было бы говорить "просто присваиваю". А так получается что лейблов таки создано на две штуки больше чем надо.
0
|
20.01.2014, 09:55 [ТС] | 9 |
не понимаю, что вы мне хотите втолдычить? все нормально создает и присваивает.
а если цикл удаления с нуля поставить все равно не удаляет... причем так созданы и едиты и панели, но они удаляются давайте по существу
0
|
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
|
|||||||||||
20.01.2014, 12:13 | 10 | ||||||||||
sergey4iki, вот, например, что касается экземпляров, создаваемых при i = 0, 1:
0
|
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,252
|
|
20.01.2014, 12:38 | 11 |
1
|
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
|
|
20.01.2014, 13:08 | 12 |
Да, точно, я спутал. Если экземпляру присвоить Parent, то Parent становится ответственным за уничтожение экземпляра, наподобие Owner-а. - В этом сходство. Но автоматического назначения Parent-а при задании Owner-а (и наоборот) не происходит.
0
|
Модератор
3490 / 2613 / 741
Регистрация: 19.09.2012
Сообщений: 7,974
|
|
20.01.2014, 13:30 | 13 |
Разве? Parent вроде отвечает за отображение, но не за удаление.
Добавлено через 11 минут Хотя, да... С уничтожением Парента, дочерние компоненты тоже удаляются.
0
|
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
|
||||||
20.01.2014, 16:33 | 15 | |||||
Вот здесь надо уточнить - в самом ли деле делается то, что задумано? Если так и задумано, то как потом должны удаляться объекты, которые первоначально были под индексами 0 и 1 (те, которые были до присвоения l1 и l2)? Получается они удаляются только при удалении парента? - Т. е. они будут на форме в течение всего времени существования этой формы.
И следующий вопрос. Если метод Tmain_frm.slbl() будет вызван повторно (до вызова кода удаления объектов) то уже после этого код удаления первоначальный набор объектов не сможет удалить - потому, что ссылки на эти объекты будут уже потеряны. Возможно, нечто похожее и происходит в программе. Для надёжности предлагаю перед кодом создания объектов выполнять FreeAndNil(m1[i]):
0
|
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,252
|
|
20.01.2014, 20:08 | 16 |
Точно что под индексом? Или с номерами 3 и 4 в заголовке?
И я бы ещё поставил бы точку останова на строке и посмотрел бы чему равно Length(mlbl7).
0
|
21.01.2014, 00:05 [ТС] | 17 |
в общем..смотрел смотрел и насмотрел, что массивы вообще не заполняются, однако на форме они както создаются,а удаляются потом благодаря тому что удалил панели, на которых были лейблы.
не удаляются те лейблы у которых парент форма.. не знаю почему не заполняется массив..
0
|
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,252
|
|
21.01.2014, 01:47 | 18 |
Создаются компоненты. А с массивами ты явно где-то напутал.
Добавлено через 52 минуты И я даже догадываюсь где. Там где ты передаешь массив в процедуру параметром по значению. Поставь var и массив заполнится.
1
|
21.01.2014, 09:37 [ТС] | 19 |
спасибо, поставил теперь все работает, понимал что не заполняется почему-то..а почему..
0
|
21.01.2014, 09:37 | |
21.01.2014, 09:37 | |
Помогаю со студенческими работами здесь
19
Один обработчик события для нескольких динамически созданных объектов Удаление динамически созданных компонентов TEdit с формы Удаление динамически созданных компонентов (panel, image, label) Пересечение динамически созданных компонентов Пересоздание динамически созданных форм Поиск динамически созданных TabSheet Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |