|
0 / 0 / 0
Регистрация: 20.01.2015
Сообщений: 12
|
||||||||||||||||
A component named already exists02.04.2015, 21:53. Показов 6123. Ответов 43
Метки нет (Все метки)
Здравствуйте!
Такая проблема. Я создал метод, который динамически создает много картинок. И вот когда я его вызываю первый раз, то все работает нормально. Но когда вызываю второй раз, то появляется ошибка "A component named im0 already exists". Вот сам код:
Пробовал удалять элементы вот так:
Если же количество элементов меньше 72, то все работает нормально.
0
|
||||||||||||||||
| 02.04.2015, 21:53 | |
|
Ответы с готовыми решениями:
43
Сообщение "A component named *** already exists" Не стандартное поведение стандартного компонента (Ошибка: A class named already exists) Последствия не указания файла описания ДНС серверов named.ca в named.conf для Bind |
|
0 / 0 / 0
Регистрация: 20.01.2015
Сообщений: 12
|
|
| 03.04.2015, 21:00 [ТС] | |
|
Или я вас не пойму, или Вы меня не так поняли.
Я создал класс, в котором в качестве данных идет изображение. При отображении формы у меня создается массив объектов моего класса. И на форме появляется необходимое мне количество картинок. При нажатии на картинку мне нужно некоторые данные в объекте поменять ну и вызвать нужные методы. Так вот как мне без имени изображения узнать порядок объекта к которому оно принадлежит?
0
|
|
|
Злостный нарушитель
10359 / 5774 / 1274
Регистрация: 12.03.2015
Сообщений: 26,687
|
|||
| 03.04.2015, 22:38 | |||
|
Добавлено через 18 минут Можно ещё упростить код. Вот, ты говоришь, у тебя список объектов, хранящих, помимо всего остального, ккомпонент TImage. Так можно пронаследовать сам класс этого объяекта прямо от TImage, а в качестве списка указателей использовать TImageList (не обязательно). Это не руководство к действию, а просто вариант, всё зависит от поставленной задачи.
0
|
|||
|
226 / 225 / 112
Регистрация: 20.10.2013
Сообщений: 808
|
|
| 03.04.2015, 22:45 | |
|
SatanaXIII, а хочешь объясню почему глупо? Да потому, что если тебе вдруг захочется поменять имичеко, то потом вылезет сущий ад. Реально проще создать TObjectList и засунуть в него TImage, так хотя бы 100% за памятью уследить можно.
0
|
|
|
|
||
| 03.04.2015, 22:46 | ||
|
Я считаю так. Ты отвечал на всякое over9000 раз только потому, что не знал, о чем говоришь.
0
|
||
|
Почетный модератор
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
|
||
| 03.04.2015, 23:03 | ||
|
Не могли бы вы привести пример той ситуации, о которой говорите? Я не утверждаю, что надо непременно совать во все динамические объекты имена. Моя позиция, что они бывают очень полезны. Поэтому я не согласен, что непременно не надо никогда использовать их.
1
|
||
|
Злостный нарушитель
10359 / 5774 / 1274
Регистрация: 12.03.2015
Сообщений: 26,687
|
|||
| 03.04.2015, 23:38 | |||
|
а) доступ по индексу, б) поиск; в) пользовательскую сортировку; г) автоматизацию и управление временем жизни хранимых элементов; д) методы списков: добавление, вставка, удаление указателя (с освобождением памяти хранимого объекта, на который этот указатель указывает), очистка, перестановка, и пр. Автор! Ну чем такой список не подходит для твоей задачи? З.Ы. Кстати, имена компонентам в списке тоже можно присваивать, причём любые (в том числе и одинаковые). Чтобы не возникало пресловутой ошибки "...component named allready exists...", надо, чтобы в один и тот же контейнер (Parent или Owner (для оконных, насколько я помню)) не попадали компоненты с одинаковыми именами. Контейнер Parent/Owner может быть равен NULL, тогда ошибка также не возникнет. Если же Parent у компонента есть, то это он является списком для компонентов, лежащих на нём (для формы это TForm -> Components[Index]), но только для компонентов! То, что положить на форму нельзя, в этот список не попадает. Ну, а далее - см. выше. Список предоставляет а), б), ..., д), ... И я не буду ничего доказывать, всё есть в хэлпе. Могу дать примеры своего кода.
0
|
|||
|
Злостный нарушитель
10359 / 5774 / 1274
Регистрация: 12.03.2015
Сообщений: 26,687
|
|
| 04.04.2015, 00:14 | |
|
0
|
|
|
1408 / 572 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
|
||||||
| 04.04.2015, 00:16 | ||||||
|
вместо 4 строки
0
|
||||||
|
Злостный нарушитель
10359 / 5774 / 1274
Регистрация: 12.03.2015
Сообщений: 26,687
|
|
| 04.04.2015, 00:20 | |
|
_Dimon_, это плохая идея: неизбежны совпадения значений Tag разных компонентов.
0
|
|
|
1408 / 572 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
|
|
| 04.04.2015, 00:28 | |
|
Verevkin, что значит "неизбежны"?
Tag назначается вручную. Если с умом все сделать, то совпадений не будет (например, задавать таги в конкретном диапазоне).
0
|
|
|
Модератор
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
|
|
| 04.04.2015, 12:54 | |
|
dimonishche, опиши где и как ты хочешь потом использовать эти имена компонентов.
Добавлено через 49 минут
0
|
|
|
0 / 0 / 0
Регистрация: 20.01.2015
Сообщений: 12
|
|||||||||||
| 04.04.2015, 13:11 [ТС] | |||||||||||
|
У меня есть массив объектов и я имени изображения присваиваю номер такой же как и порядок у элемента массива. Так вот я использую имена только для того, чтобы узнать к которому объекту это изображение принадлежит, чтобы потом мне работать с объектом. И все больше имя изображения нигде не используется.
Добавлено через 5 минут Но имя это не такая уж и проблема. Проблема у меня немного другая. Если удалять динамически созданные изображения вот так:
Я решил попробовать создать отдельный метод который будет удалять эти изображения:
0
|
|||||||||||
|
Модератор
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
|
|
| 04.04.2015, 13:24 | |
|
Я спрашивал как имя используется (код), а не как оно задается.
И что-то я массива в упор не вижу.
0
|
|
|
Злостный нарушитель
10359 / 5774 / 1274
Регистрация: 12.03.2015
Сообщений: 26,687
|
||||||||||||
| 04.04.2015, 13:29 | ||||||||||||
Ты потом пытаешься удалить уже убитое и получаешь AV.
0
|
||||||||||||
|
1135 / 616 / 129
Регистрация: 13.02.2009
Сообщений: 3,602
|
||||
| 04.04.2015, 14:06 | ||||
|
Добавлено через 9 минут А здесь блатовал да ?
Не по теме: Может тебя совесть будет мучить если он в общем осталось у вас
0
|
||||
|
Злостный нарушитель
10359 / 5774 / 1274
Регистрация: 12.03.2015
Сообщений: 26,687
|
|
| 04.04.2015, 14:18 | |
|
dimonishche, ну ты где? моё предположение верным оказалось?
0
|
|
|
|
||
| 04.04.2015, 19:04 | ||
|
На заметку что бы не орало на имя компонента достаточно задать его пустой строкой.
0
|
||
|
226 / 225 / 112
Регистрация: 20.10.2013
Сообщений: 808
|
||||||
| 04.04.2015, 19:10 | ||||||
|
Avazart, выгода наступает тогда, когда начинаешь использовать дженерики и не нужно преобразовывать типы, а так черт пойми, что в Components может лежать... Можно конечно использовать конструкции вида (не знаю как на плюсах пишется, пишу на делфях), но с дженериками это излишне
0
|
||||||
|
|
||||
| 04.04.2015, 19:19 | ||||
|
а так тут можно много насчитать розовых слоников. Добавлено через 6 минут То о чем вы говорите называется не выгодой, а удобством. А именно выгоды тут нет как таковой так как на форме обычно располагается не большое кол-во компонентов и нет особой потери в производительности при переборе/поиске итп. Да и думаю все знают что дженерики недоступны в С++Builder для использования, так что упоминание их лично для меня звучит странным.
0
|
||||
| 04.04.2015, 19:19 | |
|
Помогаю со студенческими работами здесь
40
Где можно скачать Windows Script Component (Script Component Wizard в частности) ? EXISTS exists Where not exists Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|