тема превратилась прямо-таки в FAQ для новичков. учит следить за всем, что ты делаешь.
кстати о FAQ, хочу вставить свои пять копеек. чтобы легче было отслеживать все свои циклы и вхождения в них, очень рекомендую использовать предусмотренные для этого инструменты MP. например, в опциях есть чекрыж "Show indentation guidelines" (3-й сверху). если его установить, то между, скажем,
begin и
end появится вертикальная линия. очень наглядно показывает начало и конец программных скобок.
while GetKeyClicked <> KE_STAR do
begin
| // закрашиваем экран
| FillRect(0, 0, GetWidth, GetHeight);
| // рисуем спрайты
| for iy := 1 to 10 do
| | for ix := 1 to 10 do
| | begin
| | | // sprW, sprH - ширина/высота спрайтов. если захочу поменять,
| | | // то не надо будет переписывать всю программу
| | | drawImage(sprites[ix, iy], ix * sprW, iy * sprH);
| | | // тут что-то еще делаем
| | | // ...
| | end;
| repaint;
| delay(20);
end;
в результате мы видим, где начинается и заканчивается цикл
while, и где начинаются/заканчиваются прочие циклы. и не воткнем внутрь цикла что-то левое. для этого, конечно, нужно делать отступы. и желательно писать комментарии. а имена переменных хорошо бы выбирать осмысленные. в таком коде легко разберется посторонний человек, у которого вы попросили помощи. да и вам самим легче будет искать ошибки в упорядоченной структуре. и вообще это считается хорошим тоном и отличает код от говнокода.
рекомендую довести это до автоматизма. лично меня соблюдение общепринятых стандартов всегда выручает, когда поднимаю старые проекты с километрами кода.