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

Вниз

Как удалть объёкты из TObjectList и не уменьшишь при этом ....   Найти похожие ветки 

 
Константин   (2010-04-22 15:03) [0]

Как удалть объёкты из TObjectList и не уменьшишь при этом количество указателей? Надо в цикле for бежать по объектам и если таковой не подходит по условию делать ему Free или что то там (в зависимости от характера владения). После окончания цикла убить все указатели на объекты, которые мы удалили.


 
Демо ©   (2010-04-22 15:08) [1]


> и если таковой не подходит по условию делать ему Free


В TObjectList не нужно Free выполнять для элементов. Нужно просто удалить элемент из списка.


 
Германн ©   (2010-04-22 15:09) [2]


> Как удалть объёкты из TObjectList и не уменьшишь при этом
> количество указателей?

downto


 
Омлет ©   (2010-04-22 15:10) [3]

Прочитай про OwnsObjects у TObjectList.


 
Ins ©   (2010-04-22 15:10) [4]

Насколько я понял вопрос, просто присвоить Item-у nil, но есть подозрение, что пройдись мы в цикле в обратном порядке (List.Count - 1 downto 0) вопрос бы и не возник


 
Ega23 ©   (2010-04-22 15:10) [5]

1. ObjectList.OwnsObjects := False;
2.
 for i := list.Count-1 downto 0 do
   if (list[i] = чему-то там) then
   begin
     list[i].Free;
     list.Delete(i);
   end;


 
Константин   (2010-04-22 16:37) [6]

спасибо, точно, downto как раз пройдёт так как надо!


 
icWasya ©   (2010-04-22 19:37) [7]

по условию сабжа требуется не [5] а
1. ObjectList.OwnsObjects := False;
2.

for i := list.Count-1 downto 0 do
  if (list[i] = чему-то там) then
  begin
    list[i].Free;
    llist[i]:=nil;
  end;


 
Омлет ©   (2010-04-22 20:03) [8]

> icWasya ©   (22.04.10 19:37) [7]

А не проще ли:

1. ObjectList.OwnsObjects := True;
2.
for i := list.Count-1 downto 0 do
 if (list[i] = чему-то там) then
   list.Delete(i);


 
Ega23 ©   (2010-04-22 22:39) [9]


> А не проще ли:
>
> 1. ObjectList.OwnsObjects := True;
> 2.
> for i := list.Count-1 downto 0 do
>  if (list[i] = чему-то там) then
>    list.Delete(i);


А чёрт его знает, что ему там нужно. В принципе, достаточно downto и Delete. Но может оказаться, что недостаточно.


 
Игорь Шевченко ©   (2010-04-22 22:52) [10]

"Со дна я вытащил живого партизана,
Не знал он, бедный, что закончилась война"
(с) песня



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

Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.056 c
15-1274255990
nobody
2010-05-19 11:59
2010.08.27
[MSBuild Error] The "DCC" task failed unexpectedly.


2-1274132876
antonn
2010-05-18 01:47
2010.08.27
Дата компилирования


15-1264404182
Polkin
2010-01-25 10:23
2010.08.27
ЗАГС - вопросы


2-1268291920
Fr
2010-03-11 10:18
2010.08.27
Перебор ключей TIniFile


6-1217598621
Shamansky_ne
2008-08-01 17:50
2010.08.27
Soap как поменять пакет перед посылкой





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