Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблема с TStrings [D6]


Страницы:   1 2

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


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо