Ошибка в цикле FOR

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Ошибка в цикле FOR

Сообщение SAK » 02.12.2009 18:51:46

Код: Выделить всё
for i:=0 to 10 do
if <условие> then
  begin
    i:=-1;
    break
  end;

Получаю:
Error: Illegal assignment to for-loop variable "i"
Согласен на предупреждение, но никак не на ошибку!

Добавлено спустя 3 минуты 48 секунд:
Хотя в Delphi тоже ошибку выдаёт.
SAK
постоялец
 
Сообщения: 158
Зарегистрирован: 18.02.2006 00:45:14
Откуда: Тим

Re: Ошибка в цикле FOR

Сообщение Logo » 02.12.2009 19:03:46

Вы предлагаете изменить синтаксис?
Logo
постоялец
 
Сообщения: 464
Зарегистрирован: 20.08.2008 01:00:47

Re: Ошибка в цикле FOR

Сообщение SAK » 02.12.2009 19:20:12

Да нет, я ничего не предлагаю. Я полностью согласен, что любое присвоение переменной цикла внутри цикла является ошибкой, за исключением случая когда сразу после присвоения цикл принудительно прерывается. Но это никак не относится к синтаксису языка. Просто меня возмутило, что компилятор не позволил сделать операцию не являющуюся ошибочной, вот я на него и обиделся :D
SAK
постоялец
 
Сообщения: 158
Зарегистрирован: 18.02.2006 00:45:14
Откуда: Тим

Re: Ошибка в цикле FOR

Сообщение скалогрыз » 02.12.2009 20:30:50

это истой воды ошибка, иначе цикл for пришлось бы реализовывать как while - каждый раз проверяя значение счётчика и о граничителя. Что то вроде: while i<=10 do
а for вычисляет количество итераций только один раз, что ОЧЕНЬ существенно для подобных циклов
Код: Выделить всё
for i:=0 to List.Count - 1 do
  List.Add( ... ); // List.Count изменился

в цикел с while это реализуется вот так:
Код: Выделить всё
cnt:=List.Count;
while i<cnt do ...

--------

значение счётчика цикла for изменять можно, НО только для {$mode tp}
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

Рейтинг@Mail.ru
cron