Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.06.2012, 14:18   #1
bakanaev
Форумчанин
 
Регистрация: 27.03.2012
Сообщений: 438
По умолчанию Как реализовать?

Извиняюсь что не дал нормально название теме, не смог придумать )
Проблема, есть набор чисел в ListBox состоящий из 0,1,2.
Надо узнать самый большой размер последовательности состоящей из 1,
пример :
Код HTML:
1
1
1
1
1
1
1
Размер последовательности 7.
Вот что я сделал
Код:
procedure TForm1.Button3Click(Sender: TObject);
begin
     q:=0;
   ProgressBar1.Max := ListBox1.Items.Count ;
   ProgressBar1.Min := 1;
 
 for i:=0 to listbox1.items.count do
   ProgressBar1.Position:=i;
   if q>0 then
     begin
       q:=q-1;
       continue
     end;

   begin
    if max_w <w  then
    begin
       max_w:=w;

     Label1.Caption:=(IntToStr(max_w));
     Application.ProcessMessages();
    end;
     w:=0;
    
     while (listbox1.items[i+q]='1') do
     begin
     inc(w);
     inc(q);
     end;
end;
end;
Компилируется нормально, но при нажатии кнопки вылетает ошибка "List Index out of bounds"
bakanaev вне форума Ответить с цитированием
Старый 20.06.2012, 14:22   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
for i:=0 to listbox1.items.count-1 do
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 20.06.2012, 14:26   #3
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Удалено...

Последний раз редактировалось Shouldercannon; 20.06.2012 в 14:28.
Shouldercannon вне форума Ответить с цитированием
Старый 20.06.2012, 14:31   #4
bakanaev
Форумчанин
 
Регистрация: 27.03.2012
Сообщений: 438
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Код:
for i:=0 to listbox1.items.count-1 do
Неа, не помогло, та же ошибка
bakanaev вне форума Ответить с цитированием
Старый 20.06.2012, 14:43   #5
bakanaev
Форумчанин
 
Регистрация: 27.03.2012
Сообщений: 438
По умолчанию

Проблема решена, просто не там написал код
Код:
   
 if q > 0 then
       begin
         q:=q-1;
         continue
       end;
Надо было так

Код:
procedure TForm1.Button3Click(Sender: TObject);
  begin
     q:=0;
     ProgressBar1.Max := ListBox1.Items.Count ;
     ProgressBar1.Min := 1;
 
   for i:=0 to listbox1.items.count do   
      

     begin
         if q >0 then
       begin
         q:=q-1;
         continue
       end;
      if max_w <w  then
          begin
             max_w:=w;

           Label1.Caption:=(IntToStr(max_w));
           Application.ProcessMessages();
          end;
      w:=0;
      ProgressBar1.Position:=i;
       while (listbox1.items[i+q]='1') do
         begin
         inc(w);
         inc(q);
         end;
  end;
end;
bakanaev вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как реализовать? qwester Общие вопросы C/C++ 9 26.09.2011 09:11
как реализовать такое же меню как и здесь KWNlnc Общие вопросы Delphi 7 08.06.2010 22:46
Как реализовать на с++ Xnet Общие вопросы C/C++ 1 27.05.2010 22:20
Как реализовать? Gsingle БД в Delphi 4 08.04.2010 11:00
Кнопки как RadioButton'ы в GroupBox'e. Как реализовать? Casper-SC Общие вопросы .NET 9 06.03.2010 20:07