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

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

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.01.2012, 19:12   #11
nick42
Форумчанин
 
Аватар для nick42
 
Регистрация: 14.10.2011
Сообщений: 267
По умолчанию

Не обижайтесь, но по моему Вас зациклило... . Давайте по шагам: допустим в тексте 8 строк (0..7); цикл создан для строк 7..2 с декрементом; найдено значение условия в последней строке (7) - что делается? удаляются 7,6,5 строки; индекс в это время равен 7; при следующей итерации будет обращение к 6-й строке - а ее уже нет! Я же не зря уже в двух местах советовал корректировать индекс цикла. Можно, наверное, и по другому, - ввести массив признаков строк и в цикле только помечать строки на удаление..., по разному можно.
nick42 вне форума Ответить с цитированием
Старый 01.02.2012, 09:54   #12
ParadoxX27
Пользователь
 
Регистрация: 29.01.2012
Сообщений: 11
По умолчанию

Цитата:
Сообщение от nick42 Посмотреть сообщение
Не обижайтесь, но по моему Вас зациклило... . Давайте по шагам: допустим в тексте 8 строк (0..7); цикл создан для строк 7..2 с декрементом; найдено значение условия в последней строке (7) - что делается? удаляются 7,6,5 строки; индекс в это время равен 7; при следующей итерации будет обращение к 6-й строке - а ее уже нет! Я же не зря уже в двух местах советовал корректировать индекс цикла. Можно, наверное, и по другому, - ввести массив признаков строк и в цикле только помечать строки на удаление..., по разному можно.
Да я не обижаюсь, я в этом деле новичок и просто не обратил нужного внимания на Ваши замечания
Вот скорректировал:

Код:
bool x;
int i;
        for (i=sl->Count-1;i>1;i--)
        if (sl->Strings[i].Pos(edit3->Text)) {x=true; break;}
        else x=false;
        if(x)
        {
          String s=sl->Strings[i];
          id=s.SubString(4,s.Pos("Name=")-4).ToInt();
          sl->Delete(i);
          sl->Delete(i-1);
          sl->Delete(i-2);
          i=i-2;
        }
        else {ShowMessage("Not Found");
И всё равно, если значение не находится и выскакивает "Not Found", там жму "Ок" - далее выскакивает опять та же ошибка
ParadoxX27 вне форума Ответить с цитированием
Старый 01.02.2012, 10:36   #13
nick42
Форумчанин
 
Аватар для nick42
 
Регистрация: 14.10.2011
Сообщений: 267
По умолчанию

- так это дальше уже..., Вы ж Message выдали и успокоились. А если "Not found", то и все эти индексы (u p) равны -1. Такой строки компилятор не находит, потому и ругается. Сделайте дальнейшую обработку по условию x.
nick42 вне форума Ответить с цитированием
Старый 01.02.2012, 10:40   #14
ParadoxX27
Пользователь
 
Регистрация: 29.01.2012
Сообщений: 11
По умолчанию

Цитата:
Сообщение от nick42 Посмотреть сообщение
- так это дальше уже..., Вы ж Message выдали и успокоились. А если "Not found", то и все эти индексы (u p) равны -1. Такой строки компилятор не находит, потому и ругается. Сделайте дальнейшую обработку по условию x.
Как именно это сделать? Что-то вроде:
Код:
if(x) {<вторая часть кнопки>}
else break;
Или как? Не понимаю
ParadoxX27 вне форума Ответить с цитированием
Старый 01.02.2012, 10:53   #15
nick42
Форумчанин
 
Аватар для nick42
 
Регистрация: 14.10.2011
Сообщений: 267
По умолчанию

- да просто эту пару строк:
}
else ShowMessage(
перенесите в самый конец (перед delete sl.
nick42 вне форума Ответить с цитированием
Старый 01.02.2012, 10:57   #16
ParadoxX27
Пользователь
 
Регистрация: 29.01.2012
Сообщений: 11
По умолчанию

Цитата:
Сообщение от nick42 Посмотреть сообщение
- да просто эту пару строк:
}
else ShowMessage(
перенесите в самый конец (перед delete sl.
Спасибо, всё работает!

p.s. я раньше так пробовал - не работало... О.о Правда там цикл другой был, видимо из-за этого
ParadoxX27 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с циклом. glebast Помощь студентам 1 20.01.2012 16:41
Работа с циклом ( находим сумму) - не могу понять , где ошибся ) zipo666 Помощь студентам 3 01.11.2011 12:51
работа с циклом alekstav Общие вопросы Delphi 1 31.12.2010 09:18
Задача в паскале. Работа с циклом while do. Йохан Шмидт Помощь студентам 12 28.07.2010 10:43
Работа с циклом в StringGrid-e artemavd Общие вопросы Delphi 2 20.07.2009 22:27