Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.056 c
2-1271934182
Константин
2010-04-22 15:03
2010.08.27
Как удалть объёкты из TObjectList и не уменьшишь при этом ....


2-1272893024
Сава. Ж
2010-05-03 17:23
2010.08.27
Подскажите компонент для выделения любой области?


15-1265367565
unmazable
2010-02-05 13:59
2010.08.27
Создание интерпритатора(компилятора)


15-1264632229
Германн
2010-01-28 01:43
2010.08.27
RDTSC и её использование в VB 2008 Express Edition


2-1273127792
Riply
2010-05-06 10:36
2010.08.27
Конвертация cpp-файла в obj, понятный для Delphi (RAD 2010)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский