![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проект вызвал исключение EStringListError
Doom-2 © (2007-05-07 13:48:00)Во время поиска файлов я добавляю в 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). Процесс остановленю'
Подскажите - как исправить?
Reindeer Moss Eater (2007-05-07 15:16:00) [1]> В твоем случае это оптический обман.
А почему оптический? Это, IMHO, вульгарный :)
Обман и оптический (у автора) и вульгарный (попытка ввести в заблуждение форум, сделав из наблюдаемых фактов неверные выводы)
Leonid Troyanovsky (2007-05-07 15:01:00) [2]
> 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 14:55:00) [3]Ссылка в [8] не имеет ни малейшего отношения к твоей ошибке.
Смотри внимательней что за ерунду ты написал.
for v:=0 to ListBox.Count-1 do
begin
if ListBoxSpisok.Items[v]= SR.Name+'1'
Reindeer Moss Eater (2007-05-07 14:46:00) [4]В твоем случае это оптический обман.
Doom-2 (2007-05-07 14:38:00) [5]Оптический обман?????!!!!!
Почитай -
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1035
Другое дело, что я в меру своей "зелености в Delphi" так и не понял - как это исправить, вот и обратился!
Reindeer Moss Eater (2007-05-07 14:31:00) [6]Это оптический обман
Doom-2 (2007-05-07 14:29:00) [7]for v:= ListBoxSpisok.Count downto 0 do
- так выскакивает (если ListBox был пустой) - List index out of bounds (0)
for v:= ListBoxSpisok.Count-1 downto 0 do
- так не участвует в процессе первая строка!
Doom-2 (2007-05-07 14:20:00) [8]Всё работает!
Вот только с первой строкой никак работать не хочет! Даже, если находит такую запись, - не удаляет! (пропускает мимо)
Ega23 (2007-05-07 14:08:00) [9]Break поставь внутре
Юрий Зотов (2007-05-07 13:59:00) [10]for v:= ListBox.Count-1 downto 0 do
Desdechado (2007-05-07 13:59:00) [11]Для циклов FOR правая граница вычисляется заранее, а ты внутри цикла меняешь количество строк в списке. Естественно, если было 10, а ты 5 удалил, то попытка удаления 6-го будет ошибочной (ведь цикл до 10).
Doom-2 (2007-05-07 13:56:00) [12]А при ListBox.Count вместо ListBox.Count-1
просто не срабатывает!