Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.039 c
4-1116860405
XCept.ion
2005-05-23 19:00
2005.07.18
Наиболее часто исп. проги


4-1116607874
urri
2005-05-20 20:51
2005.07.18
повторный запуск


1-1120296879
A№t0№
2005-07-02 13:34
2005.07.18
Использование try


1-1120035085
alex-kosmonavt
2005-06-29 12:51
2005.07.18
randomize


14-1118909237
Gorlum
2005-06-16 12:07
2005.07.18
Помогите найти ответы





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