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

Вниз

Как удалть объёкты из 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.067 c
15-1271017804
Юрий
2010-04-12 00:30
2010.08.27
С днем рождения ! 12 апреля 2010 понедельник


2-1268812490
Вася
2010-03-17 10:54
2010.08.27
Как узнать, существует ли компонент?


9-1186514939
max_
2007-08-07 23:28
2010.08.27
поиск столкновений


2-1271353531
Мурад Севзиханов
2010-04-15 21:45
2010.08.27
найдите пожалуйста ошибку


2-1266218226
Tonick
2010-02-15 10:17
2010.08.27
Сбор данных о характеристиках ПК