Здравствуйте все.
У меня проблема, цикл
for i:=1 to 12 do
Выходит за свои границы и доходит до 14, затем выдает ошибку выхода за границы массива и все.
Подскажите пожалуйста, срочно. Сдача проекта 10 июня!
Уважаемые авторы вопросов! Большая просьба сообщить о результатах решения проблемы на этой странице. Иначе, следящие за обсуждением, возможно имеющие аналогичные проблемы, не получают ясного представления об их решении. А авторы ответов не получают обратной связи. Что можно расценивать, как проявление неуважения к отвечающим от автора вопроса.
09-06-2008 10:34
Четвертое правило: переменная цикла должна быть локальной.
А с глобальными переменными такое случается. К примеру: в цикле вы вызвали некоторую процедуру, а в ней используется ТА ЖЕ переменная. И значение ее при возврате в цикл вполне может измениться.
2 Константин
И в таком случае оно както дошло до 14, хотя должно было выдать ошибку на 13, а вообще не может уйти дальше 12. Вот такая вот замута)
2 Сумрак
Менять тоже пробовал не помогало.
Я проблему уже сам решил, код очень и очень большой, а все переменные глобальные и используються много раз, сделал некоторые локальными и все заработало, но все равно всем спасибо!
08-06-2008 17:25 | Комментарий к предыдущим ответам
Господа! Поступило предложение прекратить давать советы по поводу того, как обойти ошибку. Цикл for - слишком фундаментальная вешь для того, чтобы оставлять в отношении него какие-либо непонятности. Можно заменить for на что-то другое и обойти ошибку, но это значит, что в следующий раз человек натупит на те-же самые грабли... Давайте подождём код...
P.S.При работе с циклом for не так уж и много правил:
1. Не изменять переменную цикла вручную.
2. За пределами цикла значение переменной цикла не определено и использоваться не должно.
3. Если внутри цикла переменная цикла не используется, то оптимизатор может делать с ней всё, что угодно, от разворота цикла наоборот до неиспользования переменной цикла вообще и в этом случае в отладчике можно наблюдать самые разные эффекты с этой переменной, но это не является ошибкой, поскольку переменная цикла в цикле не используется, а за пределами цикла использоваться не должна по определению.
Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter. Функция может не работать в некоторых версиях броузеров.