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

Вниз

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

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

Наверх





Память: 0.48 MB
Время: 0.033 c
3-1083694556
Miwa
2004-05-04 22:15
2004.05.30
При попытке добавить уникальный ключ в IBExpert


7-1083140461
Pul
2004-04-28 12:21
2004.05.30
Как программно установить в биосе время включения компьютера


14-1084047738
Swed
2004-05-09 00:22
2004.05.30
Справка о справке


3-1084151171
Beglec
2004-05-10 05:06
2004.05.30
Поиск следующей записи


3-1083760319
Hunter
2004-05-05 16:31
2004.05.30
Вопрос для общего развития





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский