|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
ListBox - List index out if bounds (3)
Всем привет !!!
Я пишу плеер, плейлист работает за счёт листбокса, и когда последняя песня доходит до конца, появляется следующяя ошибка: Project1.exe raised exception class EStringListError with message `List index out if bounds (3)`. Process stopped. Use Step or Run to continue. А потом такая: List index out if bounds (3) Помогите разобратся !!! Всем заранее спасибо !!! CODDING - Штука тонкая !!! |
#2
|
||||
|
||||
Скорее всего у тебя цикл воспроизведения построен до ListBox1.Items.Count когда нужно до ListBox1.Items.Count-1 потому как нумерация идет с нуля.
Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#3
|
|||
|
|||
Извините но я ничего непонял, нельзя ли по-подробнее ...
Что именно мне нужно сделать ??? CODDING - Штука тонкая !!! |
#4
|
||||
|
||||
var
i:integer; begin for I:=0 to ListBox1.Count-1 do begin //Здесь че то делаем с ListBox1.Items[i] end; end; По мне так все понятно |
#5
|
|||
|
|||
И куда это всё вписать?
CODDING - Штука тонкая !!! |
#6
|
|||
|
|||
я в шоке....
Delphi - это лишь инструмент, а что ты сможешь создать при помощи этого инструмента, зависит исключительно от тебя. |
#7
|
|||
|
|||
Вот взял бы и объяснил !!!
CODDING - Штука тонкая !!! |
#8
|
|||
|
|||
Проще обьяснять уже некуда.
Delphi - это лишь инструмент, а что ты сможешь создать при помощи этого инструмента, зависит исключительно от тебя. |
#9
|
|||
|
|||
Это - никуда.
При работе с ListBox (да и с любыл списком TStrings, TStringList, TList и т.д.) надо помнить следующие вещи: 1. Нумерация начинается с 0 и заканчивается Count-1 2. При обращении к элементам списка < 0 или > Count-1 ты получаешь эксепшн. 3. Если ты в цикле удаляешь элементы списка, то цикл должен быть for Count-1 DownTo 0. 4. При удалении элемента списка ассоциированный с ним объект (Objects[i]) сам не удаляется - его наду удалить руками. Исключение - TObjectList с установленным свойством OwnObjects (кажется так). Скорее всего, у тебя автоматический переход на следующую запись. При конце прослушивания последней записи в списке ты переходишь на следующую, а ее просто нет. Соотв., получаешь ошибку. При переходе конролируй, что он происходит не за границы списка. Например: Код:
procedure MyPlayList.PlayNext() begin If List1.ItemIndex >= List1.Items.Count-1 Then PlayStop // Останавливаем воспроизведение Else List1.ItemIndex := List1.ItemIndex + 1; // Следующая запись end; Аналогично, для перехода назад, только проверяешь на 0. Вместо остановки может быть и переход к первой/последней записи. |
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
Gareth (17.12.2021)
|
#10
|
|||
|
|||
Вот это я понимаю ОТВЕТ !!!!
Огромное спасибо !!! CODDING - Штука тонкая !!! |