Главная страница
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.058 c
15-1268832302
Константин
2010-03-17 16:25
2010.08.27
Построение оптимальной среды управления версиями


2-1262965161
novichek
2010-01-08 18:39
2010.08.27
передача объектов с DLL


2-1273044743
SergaDe
2010-05-05 11:32
2010.08.27
BDE Paradox странное


15-1269360123
TUser
2010-03-23 19:02
2010.08.27
Генетика и геномика человека


2-1267226371
Дима
2010-02-27 02:19
2010.08.27
Загрузка текст.файла по индексу ListBox.