Форум: "Основная";
Текущий архив: 2005.07.18;
Скачать: [xml.tar.bz2];
ВнизРабота с TObjectList Найти похожие ветки
← →
TW (2005-06-25 14:24) [0]Можете объяснить почему происходить ошибка "End of Bound(3)" припопытке удаления из листа данных если лист был создан так:
MyList:=TObjectList.Create(True);
.......
for i:=0 to MyList.Count-1 do
MyList.Delete(i);
Первые 2 цикла проходят нормально!
← →
Гаврила © (2005-06-25 14:28) [1]for i:=MyList.Count-1 downto 0 do
← →
Reindeer Moss Eater © (2005-06-25 14:30) [2]MyList.Clear;
← →
Reindeer Moss Eater © (2005-06-25 14:33) [3]Первые 2 цикла проходят нормально!
Не два, а три цикла.
А на четвертом индексная переменная цикла выходит за границы списка.
← →
Defunct © (2005-06-25 16:44) [4]>> Первые 2 цикла проходят нормально!
> Не два, а три цикла.
Рябята вы о чем? В первом же цикле индексация корректируется. см. метод delete TList.
← →
Reindeer Moss Eater © (2005-06-25 17:42) [5]Можете объяснить почему происходить ошибка "End of Bound(3)"
Итого, было три успешных итерации.
i=0,i=1,i=2.
При i=3 возникла ошибка.
← →
Alexander Panov © (2005-06-25 20:05) [6]Defunct © (25.06.05 16:44) [4]
В первом же цикле индексация корректируется
Это о чем?
← →
default © (2005-06-25 20:10) [7]for i:=0 to MyList.Count-1 do
MyList.Delete(0);
← →
default © (2005-06-25 20:11) [8]хотя [1] быстрее будет
← →
Defunct © (2005-06-26 06:16) [9]> Alexander Panov
А то не видно.
О том, что слово цикл здесь было неуместно. См. сабжевый вопрос, может попробуешь там найти 2 или тем более 3 "цикла".
← →
Alexander Panov © (2005-06-26 12:18) [10]Defunct © (26.06.05 6:16) [9]
Твое высказываниее абсолютно непонятно.
Вот это:
Defunct © (25.06.05 16:44) [4]
Рябята вы о чем? В первом же цикле индексация корректируется. см. метод delete TList.
Какая индексация корректируется? Как с этим связан метод Delete?
Можно более связно свои мысли выражать?
← →
Defunct © (2005-06-29 04:56) [11]> Alexander Panov
разбираю по словам ;>
>> В первом же цикле
В сабжевом вопросе цикл был всего один.
>>индексация корректируется
Индексация элементов в TObjectList корректируется автоматически методом delete (который используется в этом первом и последнем цикле)
>>см. метод delete TList.
Потому что метод Delete в TObjectList наследуется без изменений от TList.
помоему там было все довольно связно.
← →
boalse © (2005-06-29 06:09) [12]Допустим, изначально MyList.Count=10, тогда, встречая строчку:
for i:=0 to MyList.Count-1 do
Цикл выполняется ровно 10 раз, не больше не меньше. Да, значение Count корректируется, происходит переиндексация, но ведь верхняя граница списка уменьшается от 9 до 0, а цикл выполнится ровно 10 раз, поэтому неминуемо произойдёт обращение к несуществующему элементу. Предлагаю так:
I:=0
while MyList.Count>0 do delete(0);
Но clear лучше.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.07.18;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.046 c