Это - никуда.
При работе с 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.
Вместо остановки может быть и переход к первой/последней записи.