Форум: "Начинающим";
Текущий архив: 2007.05.27;
Скачать: [xml.tar.bz2];
ВнизПроект вызвал исключение EStringListError Найти похожие ветки
← →
Doom-2 (2007-05-07 13:48) [0]Во время поиска файлов я добавляю в ListBox уникальные (не повторяющиеся) и удаляю названия файлов, которые с таким именем были в списке. Пока пробую так: (файлы ххх.mp3)
nedobavit:=false;
for v:=0 to ListBox.Count-1 do
begin
if ListBoxSpisok.Items[v]= SR.Name+"1"
then begin
ListBox.Items.Delete(v);
nedobavit:=true;
end;
end;
if nedobavit =false then ListBox.Items.Add(SR.Name);
Появляется ошибка: Проект вызвал исключение EStringListError с сообщением "List index out of bounds (0). Процесс остановленю"
Подскажите - как исправить?
← →
Doom-2 (2007-05-07 13:56) [1]А при ListBox.Count вместо ListBox.Count-1
просто не срабатывает!
← →
Юрий Зотов © (2007-05-07 13:59) [2]for v:= ListBox.Count-1 downto 0 do
← →
Desdechado © (2007-05-07 13:59) [3]Для циклов FOR правая граница вычисляется заранее, а ты внутри цикла меняешь количество строк в списке. Естественно, если было 10, а ты 5 удалил, то попытка удаления 6-го будет ошибочной (ведь цикл до 10).
← →
Ega23 © (2007-05-07 14:08) [4]Break поставь внутре
← →
Doom-2 (2007-05-07 14:20) [5]Всё работает!
Вот только с первой строкой никак работать не хочет! Даже, если находит такую запись, - не удаляет! (пропускает мимо)
← →
Doom-2 (2007-05-07 14:29) [6]for v:= ListBoxSpisok.Count downto 0 do
- так выскакивает (если ListBox был пустой) - List index out of bounds (0)
for v:= ListBoxSpisok.Count-1 downto 0 do
- так не участвует в процессе первая строка!
← →
Reindeer Moss Eater © (2007-05-07 14:31) [7]Это оптический обман
← →
Doom-2 (2007-05-07 14:38) [8]Оптический обман?????!!!!!
Почитай -
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1035
Другое дело, что я в меру своей "зелености в Delphi" так и не понял - как это исправить, вот и обратился!
← →
Reindeer Moss Eater © (2007-05-07 14:46) [9]В твоем случае это оптический обман.
← →
Reindeer Moss Eater © (2007-05-07 14:55) [10]Ссылка в [8] не имеет ни малейшего отношения к твоей ошибке.
Смотри внимательней что за ерунду ты написал.
for v:=0 to ListBox.Count-1 do
begin
if ListBoxSpisok.Items[v]= SR.Name+"1"
← →
Leonid Troyanovsky © (2007-05-07 15:01) [11]
> Reindeer Moss Eater © (07.05.07 14:46) [9]
> В твоем случае это оптический обман.
А почему оптический? Это, IMHO, вульгарный :)
> Doom-2 (07.05.07 14:29) [6]
> for v:= ListBoxSpisok.Count-1 downto 0 do
> - так не участвует в процессе первая строка!
Это утверждение - ложно.
--
Regards, LVT.
← →
Reindeer Moss Eater © (2007-05-07 15:16) [12]> В твоем случае это оптический обман.
А почему оптический? Это, IMHO, вульгарный :)
Обман и оптический (у автора) и вульгарный (попытка ввести в заблуждение форум, сделав из наблюдаемых фактов неверные выводы)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.05.27;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.046 c