Страница 1 из 1

Ошибка в цикле 'for loop control variable must be...'

Добавлено: 29 сен 2004, 16:20
shpi0
Вот такая ошибочка... 'for loop control variable must be simple local variable' :evil: посмотрите код, что неправильно там? чем переменная для цикла не подходит? она задается перед началом цикла, ничего не понимаю, в чем ошибка... (программа после компилирования не выполняет цикл, загружает проц на 100% и висит...) :cry:

Код: Выделить всё

var
  Form2: TForm2;
  i:integer; // в какую сторону перемещать
  m1,m:integer; // кол-во тактов для перемещения
...

Код: Выделить всё

procedure TForm2.Timer1Timer(Sender: TObject);
begin
randomize;
i := random(0-3); { делаем выбор, в какую сторону премещать:
                        i = 0 - влево
                        i = 1 - вправо
                        i = 2 - вниз
                        i = 3 - вверх }
randomize;
m := random(1-100); // выбираем кол-во тактов для перемещения
for m1 := 1 to m do begin // перемещаем заданное кол-во раз
if ((not(image1.Left>235))or(not(image1.Left<0)))and((not(image1.Top<0))or(not(image1.top>185)))then begin
case i of
        0: image1.Left := image1.Left + 1;
        1: image1.Left := image1.Left - 1;
        2: image1.Top := image1.Top - 1;
        3: image1.Top := image1.Top + 1;
end;
                                                                                                     end;
                    end;
end;
это я пытался сделать свободное движение объекта с отражением от границ экрана... может кто подскажет другой способ? :roll:

Добавлено: 29 сен 2004, 19:03
Eugie
Счетчиком цикла может быть только локальная переменная, т.е. объявленная в том же блоке, что и for. Почему такое ограничение? А представь, что в цикле ты вызываешь, например, другой метод, в котором этой переменной (счетчик цикла) что-нибудь присваивается - некарачо :-/

У тебя m1 объявлен на уровне модуля, поэтому компилятор и ругается.