Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.27;
Скачать: CL | DM;

Вниз

Удалить конкретный элемент из массива компонентов   Найти похожие ветки 

 
Vass   (2010-05-17 20:03) [0]

Доброго времени суток! У меня дан массив:
cimag:array[1..255] of TImage.
Помогите удалить конкретный элемент массива например 5. Пытаюсь:
...
cimag[5].Free
...

Элемент с формы удаляется, но делфи выдает кучу ошибок когда пытаюсь выполнить действия с другими блоками. Или так нельзя делать, подскажите тогда как можно! Спасибо!


 
_Юрий ©   (2010-05-17 20:07) [1]


> Элемент с формы удаляется,

а ссылка на удаленный объект остается в массиве, когда цикл идет по массиву, в этом месте получается нарушение доступа к памяти.
Варианты:
1. Обнулять ссылку:

cimag[5].Free;
cimag[5]:=nil;

в циклах проверять на nil

if cimag[5] <> nil then

2. Использовать TList вместо массива


 
DVM ©   (2010-05-17 20:07) [2]


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

Покажи, что ты делаешь и как.


> Или так нельзя делать

Ну вобщем то можно, а почему нет.


> подскажите тогда как можно! Спасибо!

Лучше вероятно использовать список. Более того, этот список уже имеется у каждой формы.


 
Vass   (2010-05-17 20:21) [3]


> Покажи, что ты делаешь и как.

у меня блоки с имэйджами таскаются по форме с помощью мыши, а клик по кнопке Удалить удаляет выбранный имэйдж (у меня есть еще процедура выбора имэйджа 1 клик по имэйджу - он теперь выбран). Удалил блок методом Free у меня потом делфи "ругается", когда на другие имэйджи пытаюсь таскать или выбрать!))  

> 1. Обнулять ссылку:cimag[5].Free;cimag[5]:=nil;

Спасибо!!! До этого только использовал отдельно cimag[5].Free; или cimag[5]:=nil; Что то не до пёр использовать вместе))) Но теперь прибавиться работы с проверкой на nil. Спасибо за то что подсказали и так быстро!!!))


 
turbouser ©   (2010-05-17 21:47) [4]


> Vass   (17.05.10 20:21) [3]

Используй TObjectList


 
Омлет ©   (2010-05-17 21:49) [5]

Придет опыт, и будет использоваться TObjectList.
Придет еще опыт, и не будет кучи TImage, а будет всего один TBitmap.



Страницы: 1 вся ветка

Текущий архив: 2010.08.27;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.163 c
2-1267541345
Pavel
2010-03-02 17:49
2010.08.27
Чтение данных из буфера


15-1265084562
Дмитрий С
2010-02-02 07:22
2010.08.27
Что делать, если на шлюзе не хватает портов для трансляции?


2-1271606644
tippa
2010-04-18 20:04
2010.08.27
сравнение числа с маской


2-1262612569
ZV
2010-01-04 16:42
2010.08.27
Компонент TMS Async 32 (СОМ порт) ,объясните как с ним работать


15-1271018147
@!!ex
2010-04-12 00:35
2010.08.27
Lab степень отличия цветов друг от друга