Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Закрытая тема
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 08.05.2011, 21:45
obsession obsession вне форума
Прохожий
 
Регистрация: 08.05.2011
Сообщения: 1
Репутация: 10
По умолчанию project raised exception class estringlisterror with message list index out of bounds

что нужно сделать чтобы не было этой ошибки? подскажите пожалуйста)
  #2  
Старый 08.05.2011, 22:21
Raskolnikov Raskolnikov вне форума
Прохожий
 
Регистрация: 20.04.2011
Адрес: Киров
Сообщения: 35
Версия Delphi: 7 Enterprise
Репутация: 148
По умолчанию

Попытка обращения к несуществующему элементу объекта TStringList. Индекс должен быть больше или равен нулю и строго меньше количества строк. Покажи код, который вызывает исключение.
  #3  
Старый 09.05.2011, 00:05
Человек_Борща Человек_Борща вне форума
Новичок
 
Регистрация: 17.09.2010
Адрес: Беларусь, г. Минск
Сообщения: 58
Версия Delphi: 7, 2010,XE
Репутация: 10
По умолчанию

уверен у вас такой цикл точно есть:
Код:
for i:=0 to StringList.count do
begin
//something code...
end;

в общем ошибка в том что нужно отнимать 1 либо начинать с еденицы. т.е. или так:
Код:
for i:=0 to StringList.count -1 do
begin
//something code...
end;

либо так
Код:
for i:=1 to StringList.count do
begin
//something code...
end;
  #4  
Старый 14.07.2011, 12:26
UFO 007 UFO 007 вне форума
Новичок
 
Регистрация: 28.11.2010
Сообщения: 54
Репутация: 10
По умолчанию EListError with message 'List index out of bounds(9)'

Доброго всем времени суток!
Пардоньте, что не начал новую тему(топик) - неча форум захламлять, когда на аналогичный предмет можно и здесь пообщаться.
Проблемстон следующий: динамически (вродь как Run-Time) создаю кнопочку:
Код:
Procedure CreateButtons2(DirName: string; Left_: integer);
begin
  Sbutton2:= TSoundButton.Create(Form1);
  with Sbutton2 do
  begin
    Caption := DirName;
    parent:=Form1;
    Height:= 25;
    Width:= 100;
    Top := 400;
    Left := Left_;
    Visible:= True;
    OnClick := Form1.SButton2Click;
  end;
end;
(декларация Sbutton2 : TSoundButton - глобальная) и при нажатии кн. "Назад" надо её ликвидировать:
Код:
procedure TForm1.ButtBackClick(Sender: TObject);
var
  i: integer;
begin
  ListBox1.Items.Add('ButtBackClick');
  For i:=0 to Form1.ControlCount-1 do
  if Form1.Controls[i].ClassType = TSoundButton then
  begin    
    ListBox1.Items.Add( SButton2.caption);
    SButton2.Free;
  end;
end;
и caption её я видел пока не добавил SButton2.Free; - вот тут-то и начались ГРАБЕЛЬКИ... Хэлп, плз, кто может...

З. Ы. А ежели кнопок будет 2 или 3 или ... их как "убивать"?
  #5  
Старый 14.07.2011, 14:09
Аватар для Viajero
Viajero Viajero вне форума
Активный
 
Регистрация: 14.06.2011
Адрес: РБ
Сообщения: 214
Версия Delphi: Delphi 7 FB 2.5
Репутация: 5849
По умолчанию

По моему так правильней
Код:
for i:=0 to StringList.count -1 do
begin
//something code...
end;
а вообще то самому можно справку посмотреть, там написано что строки с нуля начинаются.
Или, в крайнем случае методом тыка, компилятор всегда правильно ответит

Цитата:
Сообщение от UFO 007
- вот тут-то и начались ГРАБЕЛЬКИ...
что именно пишет?
  #6  
Старый 14.07.2011, 14:15
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

В принципе так-же как и находите, только мне кажется, что это вообще неправильный подход делать стопку кнопок.
Код:
For i:=0 to Form1.ControlCount-1 do
  if Form1.Controls[i].ClassType = TSoundButton then
  begin    
    ListBox1.Items.Add( SButton2.caption);
    TSoundButton(Form1.Controls[i]).Free;
  end;
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
  #7  
Старый 14.07.2011, 14:34
Аватар для Viajero
Viajero Viajero вне форума
Активный
 
Регистрация: 14.06.2011
Адрес: РБ
Сообщения: 214
Версия Delphi: Delphi 7 FB 2.5
Репутация: 5849
По умолчанию

Ну если одна и та же кнопка то появлятся то исчезает, то я бы, использовал бы свойство visible и не мучил бы диспетчер памяти
  #8  
Старый 14.07.2011, 15:21
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Цитата:
Сообщение от Viajero
Ну если одна и та же кнопка то появлятся то исчезает, то я бы, использовал бы свойство visible и не мучил бы диспетчер памяти
ну если автор именно так хочет, то надо поправить кое-что. Раз кнопки будут добавляться последовательно, то видимо и убивать надо с последней и по одной за каждый вызов, тогда немножко по другому:
Код:
For Form1.ControlCount-1 downto 0 do
  if Form1.Controls[i].ClassType = TSoundButton then
  begin    
    ListBox1.Items.Add( SButton2.caption);
    TSoundButton(Form1.Controls[i]).Free;
    Break;
  end;
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
  #9  
Старый 14.07.2011, 21:27
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
Плохо Что за бардак?

Цитата:
Сообщение от UFO 007
...Пардоньте, что не начал новую тему(топик)...
Пора уже наказывать за бардак в чужих топиках, а тот, кто будет в дальнейшем пользоваться поиском, вообще ничего не поймёт.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Закрытая тема


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:11.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025