Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Исправление ошибки "List index out of bounds (-1)" в Delphi XE8: причины и решения

Delphi , Компоненты и Классы , Списки

Переход на новую версию разработки программного обеспечения, например, с Delphi 7 на Embarcadero Delphi XE8, может сопровождаться различными проблемами, в том числе и техническими ошибками. Одна из таких ошибок, с которой сталкиваются разработчики, это "List index out of bounds (-1)" в момент клика по пустой строке в ListBox. В данной статье мы рассмотрим, что может быть причиной возникновения этой ошибки и как её можно исправить.

Причины возникновения ошибки

Ошибка "List index out of bounds (-1)" возникает, когда программа пытается обратиться к элементу списка по индексу, который не существует или выходит за пределы допустимого диапазона. В случае с ListBox, это может произойти, если пользователь кликнул по пустой строке, и в результате переменная ItemIndex имеет значение -1, что указывает на отсутствие выделенного элемента.

Пример кода, вызывающего ошибку

Представленный ниже пример кода демонстрирует проблему, когда происходит попытка доступа к элементу списка без предварительной проверки:

procedure TMainForm.ChoiceListBoxClick(Sender: TObject);
begin
    Choice := ChoiceListBox.Items[ChoiceListBox.ItemIndex];
    ChoiceListBox.Items.Clear;
    if InDialogueWith <> '' then
        DialoguesUnit.Dialogue
    else
        ActionsUnit.Actions;
end;

Исправление ошибки

Для исправления ошибки необходимо добавить проверку на то, что элемент в ListBox выделен, то есть ItemIndex не равен -1. Исправленный код будет выглядеть следующим образом:

procedure TMainForm.ChoiceListBoxClick(Sender: TObject);
begin
    if ChoiceListBox.ItemIndex <> -1 then
    begin
        Choice := ChoiceListBox.Items[ChoiceListBox.ItemIndex];
        ChoiceListBox.Items.Clear;
        if InDialogueWith <> '' then
            DialoguesUnit.Dialogue
        else
            ActionsUnit.Actions;
    end;
end;

Заключение

Ошибка "List index out of bounds (-1)" в Delphi XE8 является следствием попытки доступа к несуществующему элементу списка. Использование проверки на ItemIndex перед обращением к элементам списка позволяет избежать этой ошибки. При работе с компонентами, такими как ListBox, важно помнить о необходимости проверки наличия выделенного элемента перед его использованием.

Этот пример показывает, как важно внимательно относиться к деталям в коде на Object Pascal, и как простая проверка может предотвратить возникновение ошибок, связанных с некорректным управлением индексами.

Создано по материалам из источника по ссылке.

и пути решения ошибки 'List index out of bounds (-1)' при переходе на использование Embarcadero Delphi XE8, связанной с попыткой обращения к несуществующему элементу в ListBox.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Списки ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-05-09 09:00:03/0.0058209896087646/0