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

Вниз

Как правильно очистить массив элементов ?   Найти похожие ветки 

 
IrBisoff ©   (2004-05-15 08:38) [0]

Наверное, последний на сегодня вопрос: у меня есть массив элементов TLabel, который я создавал так: RightLabels[counter] := TLabel.Create(nil); RightLabels[counter].Parent := Freader.RightPage;, но в один прекрасный момент все компоненты этого массива необходимо удалить, а потом создать заново, но с другими параметрами. Я подумал, что скорее всего это делается так: for i := 1 to RightTotal-1 do RightLabels[i].Free;. К сожалению, такой вариант выдаёт ошибку.. Я даже не разбирался ещё в какой момент, но ошибка - Access Violation, либо при освбождении итемов либо при попытке создания на их месте новых.


 
IrBisoff ©   (2004-05-15 08:50) [1]

Уточнение: Компоненты просто великолепно уничтожаются, а вот ошибка выдаётся при создании в массиве компонента по второму кругу.


 
begin...end ©   (2004-05-15 09:52) [2]

А всё-таки неплохо было бы посмотреть на код.


 
IrBisoff ©   (2004-05-15 10:09) [3]

Уточнение номер два: Как проблемма появилась, так и  решилась. На самом деле код уже настолько массивный, что не мудрено упустить три момента, которые в совокупности образуют эту ошибку. =) А вот касательно кода, всё что нужно было - я привёл в первом посте. Одно только "но" - при нормальных обстоятельствах всё работает великолепно, нужно лишь контролировать, чтобы объект не создавался более одного раза.


 
MetalFan ©   (2004-05-15 11:04) [4]

мда... изврат какой-то!


 
Palladin ©   (2004-05-15 14:36) [5]

Просто поменять свойства не судьба?


 
I.C.   (2004-05-15 18:47) [6]

Массивы - преданье старины глубокой. Для твоего случая гораздо удобнее пользоваться TCollection+TCollectionItem


 
Palladin ©   (2004-05-15 18:51) [7]


> Массивы - преданье старины глубокой

Да что вы говорите?


 
jack128 ©   (2004-05-15 18:51) [8]


> Массивы - преданье старины глубокой. Для твоего случая гораздо
> удобнее пользоваться TCollection+TCollectionItem
бред.. Если уж на то пошло TObjectList или TComponentList в зависимости от задачи..


 
IrBisoff ©   (2004-05-15 18:57) [9]


> Просто поменять свойства не судьба?


Нет, не судьба... Лэйблы могут создаваться совсем по-разному, на их создание у мну уже отведено порядка 300 строк кода, а на то, чтобы обновить их параметры надо ещё столько же, если не  больше. =)


 
IrBisoff ©   (2004-05-15 19:01) [10]


> бред.. Если уж на то пошло TObjectList или TComponentList
> в зависимости от задачи..


А какие преимущества ? И куда смотреть на пример реализации ? ;)


 
IrBisoff ©   (2004-05-15 19:02) [11]


> бред.. Если уж на то пошло TObjectList или TComponentList
> в зависимости от задачи..


А какие преимущества ? И куда смотреть на пример реализации ? ;)


 
IrBisoff ©   (2004-05-15 19:03) [12]


> бред.. Если уж на то пошло TObjectList или TComponentList
> в зависимости от задачи..


А какие преимущества ? И куда смотреть на пример реализации ? ;)


 
jack128 ©   (2004-05-15 23:33) [13]


> А какие преимущества ?
Нет необходимости вызывать Free для каждого элемента при удалении этого элемента из списка. КомпонентЛист к тому же сам nil"ит ссылку на уничтоженный компонент.

> И куда смотреть на пример реализации ?
без понятия. Запусти поиск по исходникам VCL - думаю найдешь...


 
evvcom ©   (2004-05-16 04:25) [14]


> > Просто поменять свойства не судьба?
>
>
> Нет, не судьба... Лэйблы могут создаваться совсем по-разному,
> на их создание у мну уже отведено порядка 300 строк кода,
> а на то, чтобы обновить их параметры надо ещё столько же,
> если не  больше. =)

Значит что-то с логикой не то.


 
IrBisoff ©   (2004-05-16 04:37) [15]


> Значит что-то с логикой не то.


Мне это воспринимать как оскорбление ? ;) В строку у меня может помещаться от одного до пяти лэйблов с разными аттрибутами, это всё связано со многими факторами, другая реализация потребовала бы ещё больших усилий. Если начать это всё хозяйство двигать по форме и ресайзить - не то что писать задолбаюсь, так оно ещё и тормозить начнёт, плюс к тому на форме может находиться в зависимости от обстоятельств разное число лэйблов (от одного до очень большого числа штук ;), не подчищать лишние было бы крайне неумно..



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

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

Наверх




Память: 0.5 MB
Время: 0.031 c
1-1084662075
Shade_
2004-05-16 03:01
2004.05.30
Хранение дерева данных


3-1083833695
Михаил
2004-05-06 12:54
2004.05.30
Подстановочные поля


14-1084011192
Drakon
2004-05-08 14:13
2004.05.30
С днём победы!


7-1082712524
Zyb
2004-04-23 13:28
2004.05.30
Сервис в Win2000


7-1082788374
Hkr
2004-04-24 10:32
2004.05.30
Скрыть из ALT-Tab