![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с TStrings [D6]
Artem © (2008-02-10 17:57:00)На этапе создания формы:
i:=0;
im:=TStringList.Create;
при нажатии на кнопку "добавить":
if opendialog1.Execute then
begin
im.add(opendialog1.FileName);
listBox1.Items.Add(im.strings[i-1]+' ------->'+' img'+inttostr(i));
inc(i);
end;
при нажатии на кнопку "удалить":
listbox1.Items.delete(listbox1.ItemIndex);
im.delete(listbox1.ItemIndex);
Вот тут и вылетает ошибка " List Index out of bounds (-1)"
Как решить эту проблему?
Artem (2008-02-10 18:56:00) [21]
> Джо ©
скажите, что упускаю в коде? что не так делаю? ведь, наверняка, вы не раз встречались с вопросом добавления-удаления stringlist...
Джо (2008-02-10 18:53:00) [22]> [18] Artem (10.02.08 18:48)
> Ясно. А подсказать никак что ли?
Ну ведь подсказали же. [17] Amoeba ©
Artem (2008-02-10 18:48:00) [23]Ясно. А подсказать никак что ли?
Amoeba (2008-02-10 18:46:00) [24]
> Artem (10.02.08 18:44) [16]
>
> Я ни фига не понимаю. В чем здесь проблема? Как мне ее решить?
> Помогите чайнику :)
>
Трассировать в отладчике и думать над логикой своего кода.
Artem (2008-02-10 18:44:00) [25]Я ни фига не понимаю. В чем здесь проблема? Как мне ее решить? Помогите чайнику :)
Игорь Шевченко (2008-02-10 18:41:00) [26]
> Fencepost error - что это?
Ошибка подсчета почтовых столбов. +- единица
Artem (2008-02-10 18:30:00) [27]Fencepost error - что это?
Игорь Шевченко (2008-02-10 18:30:00) [28]Fencepost error
Artem (2008-02-10 18:28:00) [29]Я же говорю, тут код простой.
Form.Create:
i:=0;
im:=TStringList.Create;
Добавление:
if opendialog1.Execute then
begin
im.add(opendialog1.FileName);
listBox1.Items.Add(im.strings[i]+' ------->'+' img'+inttostr(i));
inc(i);
end;
Удаление:
listbox1.Items.delete(listbox1.ItemIndex);
im.delete(listbox1.ItemIndex+1);
Что пропускаю? Какую ситуацию? Что добавить?
Anatoly Podgoretsky (2008-02-10 18:24:00) [30]> Artem (10.02.2008 18:22:10) [10]
А ошибка к коде. Ты оттрасируй его.
Artem (2008-02-10 18:22:00) [31]а что?
Anatoly Podgoretsky (2008-02-10 18:22:00) [32]Не на пустые элементы не ругается.
Artem (2008-02-10 18:21:00) [33]какую-нибудь сортировку делать? как?
получается, что удалившиеся элементы становятся пустыми. я так понимаю на это ругается.
как решить?
Anatoly Podgoretsky (2008-02-10 18:20:00) [34]> Artem (10.02.2008 18:19:06) [6]
Теперь у тебя нет элемента с индексом 2
Artem (2008-02-10 18:19:00) [35]Не могу догнать, что я пропускаю. Теперь все работает, но после удаления всех элементов при добавлении нового опять выскакивает ошибка List Index out of bounds (2)
что пропускаю?
Anatoly Podgoretsky (2008-02-10 18:17:00) [36]> Artem (10.02.2008 18:10:03) [3]
Опять же не надо удалять элемент с индексом 1 если у тебя его нет.
Artem (2008-02-10 18:12:00) [37]причем при добавлении
Artem (2008-02-10 18:10:00) [38]
> Amoeba ©
теперь List Index out of bounds (1)...
Amoeba (2008-02-10 18:05:00) [39]
> i:=0;
> ...
> listBox1.Items.Add(im.strings[ i-1]+' ------->'+' img'+inttostr(i));
Смотрим внимательно: чему равно i? Нулю!
Так почему же
im.strings[ i-1] а не im.strings[ i]?
Теперь, надеюсь, понятно, " Как решить эту проблему"? Просто надо быть внимательнее с индексами.
Anatoly Podgoretsky (2008-02-10 18:04:00) [40]> Artem (10.02.2008 17:57:00) [0]
Не надо пытаться удалять, когда ItemIndex = -1