Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.01.22;
Скачать: [xml.tar.bz2];

Вниз

Удаление в ListView   Найти похожие ветки 

 
Kolya   (2006-01-06 04:30) [0]

Привет! Я использую следующее:

for i:=1 to spPlayListListView1.Items.Count-1 do
begin
   if not FileExists(spPlayListListView1.Items[i].Caption) then
   spPlayListListView1.Items.Delete(i);

для удаления из списка несуществующих файлов. При нажатии удалить возникает ошибка Access violation. Как написать правильно? Может, дело в колонках (их у меня 3)?


 
Almaz ©   (2006-01-06 06:14) [1]


> При нажатии удалить возникает ошибка Access violation. Как
> написать правильно? Может, дело в колонках (их у меня 3)?

Правильно, что возникает. Дело в том, что количество итераций цикла рассчитывается один раз - перед началом цикла. Теперь представте, что вы удалили несколько записей - тогда spPlayListListView1.Items.Count уменьшится, однако цикл повторится столько раз, сколько записей было на момент его начала - пройдясь по уже несуществующим записям. Отсюда и ошибка.
Решение ее предельно просто - сделать цикл не на возрастание, а на убывание, т.е.

for i:=spPlayListListView1.Items.Count-1 downto 0 do
begin
  if not FileExists(spPlayListListView1.Items[i].Caption) then
  spPlayListListView1.Items.Delete(i);


И еще, обратите внимание - индекс элементов начинается с нуля, а не 1.

Удачи.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.01.22;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.038 c
14-1135470822
Yerlan Dossanov
2005-12-25 03:33
2006.01.22
Взаимодействие Delphi с ОС Unix


1-1134639425
-=Germe$=-
2005-12-15 12:37
2006.01.22
Sender as ...


3-1132841563
salluy
2005-11-24 17:12
2006.01.22
Получить список PRIMARY KEY


2-1136223807
axel65
2006-01-02 20:43
2006.01.22
Символы


10-1110129548
AL CAPONE
2005-03-06 20:19
2006.01.22
OLE+WORD





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