powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Грамотно "убить" компоненты
9 сообщений из 9, страница 1 из 1
Грамотно "убить" компоненты
    #32292439
Фотография Cauchy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделал тестовую программу в которой форма с двумя кнопками. Одной кнопкой
создаю новые компоненты (в цикле):
Код: plaintext
1.
2.
3.
4.
5.
Im = new TImage(FMain);
    Im->Visible = false;
    Im->Parent = Panel1;
    Im->Name =  "ObjectImage" +IntToStr(i);
    ....//на них в Bitmap при помощи Canvas рисуются линии.
    Im->Visible = true;


Другой кнопкой удаляю эти компоненты:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
for (int i =  0 ;i < FMain->ComponentCount;i++)
  {
     if (((FMain->Components[i])->GetParentComponent() == Panel1)
        && ((AnsiString)(FMain->Components[i]->ClassName()) ==  "TImage" ))
     {
        delete FMain->Components[i];
     }
  }


Так вот если сначала кликнуть на кнопку создания, потом на кнопку удаления, а потом опять создания, то возникает ошибка:
A component named ObjectImage1 already exist.

Странно что на ObjectImage0 не ругается, а на ObjectImage1 ругается.

Что я не так делаю при удалении компонентов?
...
Рейтинг: 0 / 0
Грамотно "убить" компоненты
    #32292443
Фотография Cauchy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделал тестовую программу в которой форма с двумя кнопками. Одной кнопкой
создаю новые компоненты (в цикле):
Код: plaintext
1.
2.
3.
4.
5.
Im = new TImage(FMain);
    Im->Visible = false;
    Im->Parent = Panel1;
    Im->Name =  "ObjectImage" +IntToStr(i);
    ....//на них в Bitmap при помощи Canvas рисуются линии.
    Im->Visible = true;


Другой кнопкой удаляю эти компоненты:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
for (int i =  0 ;i < FMain->ComponentCount;i++)
  {
     if (((FMain->Components[i])->GetParentComponent() == Panel1)
        && ((AnsiString)(FMain->Components[i]->ClassName()) ==  "TImage" ))
     {
        delete FMain->Components[i];
     }
  }


Так вот если сначала кликнуть на кнопку создания, потом на кнопку удаления, а потом опять создания, то возникает ошибка:
A component named ObjectImage1 already exist.

Странно что на ObjectImage0 не ругается, а на ObjectImage1 ругается.

Что я не так делаю при удалении компонентов?
...
Рейтинг: 0 / 0
Грамотно "убить" компоненты
    #32292454
Фотография Cauchy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извините за спам (два топика получилось) - что-то сглючило...

Выяснил что ругается на компоненты с нечетными индексами:
ObjectImage1,ObjectImage3,ObjectImage5,ObjectImage7,ObjectImage9

Ерунда какая-то получается...
<<C++Builder 6
...
Рейтинг: 0 / 0
Грамотно "убить" компоненты
    #32292470
Фотография Cauchy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если еще раз удалить, а потом создать, то ругается на четные!
Ничего не понимаю...
...
Рейтинг: 0 / 0
Грамотно "убить" компоненты
    #32292561
Фотография Cauchy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оказывается дело было в
for (int i = 0;i < FMain->ComponentCount;i++)
перебор надо было начинать с конца
for (int i = FMain->ComponentCount-1;i >= 0 ;i--)
потому что при удалении i-того компонента на его место встает i+1-ый, а я его пропускаю.
...
Рейтинг: 0 / 0
Грамотно "убить" компоненты
    #32292646
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Естественно ... !
Рад что ты догодался сам !
...
Рейтинг: 0 / 0
Грамотно "убить" компоненты
    #32294389
Фотография DarkCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
throw Exception("всё заибало пиздец нахуй блять");

сорри, оффтопик.

...
Рейтинг: 0 / 0
Грамотно "убить" компоненты
    #32294406
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что это на тебя нашло ??


или пользуешся что форум не модерируется ??
вот если бы я им был
...
Рейтинг: 0 / 0
Грамотно "убить" компоненты
    #32294940
Фотография DarkCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Джип, уже всё нормально.
Отпустило.

Спасибо за поддержку :))

...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Грамотно "убить" компоненты
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]