|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
29.01.2012, 14:46 | #1 |
Пользователь
Регистрация: 29.01.2012
Сообщений: 11
|
Работа с циклом.
Доброго утра, дня или вечера! Кому как.
Не могу разобраться с циклом: Код:
|
29.01.2012, 16:22 | #2 |
Форумчанин
Регистрация: 14.10.2011
Сообщений: 267
|
- последний break вообще ни к чему.
|
29.01.2012, 16:27 | #3 |
Пользователь
Регистрация: 29.01.2012
Сообщений: 11
|
|
30.01.2012, 10:31 | #4 |
Форумчанин
Регистрация: 14.10.2011
Сообщений: 267
|
Я считаю, что неправилен сам подход: в цикле нужно модифицировать какую-то логическую переменную, а после исполнения цикла, в зависимости от значения этой переменной, уже работать с самой формой3.
Напр: bool isdeleted; for(...){.. isdeleted=true;}; if(!isdeleted) Form3->Show; |
30.01.2012, 11:07 | #5 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
У Вас цикл организован как i=sl->Count-1, а внутри цикла размер массива sl изменяется. Если действительно хотите менять размер массива, тогда нужно это делать через while.
Код:
Код:
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder Последний раз редактировалось Smitt&Wesson; 30.01.2012 в 11:09. |
30.01.2012, 14:33 | #6 | |
Пользователь
Регистрация: 29.01.2012
Сообщений: 11
|
Цитата:
. |
|
30.01.2012, 15:02 | #7 |
Форумчанин
Регистрация: 14.10.2011
Сообщений: 267
|
никаких парадоксов, - если Вы собираетесь удалять две предшествующие строки, то ограничивать цикл надо не i>=0, а i>1 или внутри цикла сделать анализ, чтоб не обращаться к несуществующим (с отрицательным индексом) строкам компонента.
|
31.01.2012, 14:48 | #8 |
Пользователь
Регистрация: 29.01.2012
Сообщений: 11
|
Код:
Помогите найти ошибку =( |
31.01.2012, 15:10 | #9 |
Форумчанин
Регистрация: 14.10.2011
Сообщений: 267
|
- просто надо душевнее к циклам относиться... - Вы и запись в файл, и открытие новой формы - все выполняете, не выйдя из цикла. Тут любой компилятор взбесится.
После x=true; я бы еще добавил i = i-2: для коррекции индекса (Вы ж три последние в цикле строки "снесли"...) и закрыл фигурную скобку. Потом - анализ х: если истина - ... ну, и дальше по тексту - иначе - ShowMessage. |
31.01.2012, 15:58 | #10 |
Пользователь
Регистрация: 29.01.2012
Сообщений: 11
|
Вот весь код кнопки, при выполнении условия if в первом цикле всё работает нормально, ошибок не вылетает. Но если выполняется else {ShowMessage("Not Found");}, то после нажатия в этом сообщении на "Ок" вылетает "raised exception class EStringListError with message List index out of bounds (-1)"
Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Работа с циклом. | 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 |