Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.11.2011, 22:17   #1
Loadgame
Пользователь
 
Регистрация: 11.10.2011
Сообщений: 17
По умолчанию Проблема с ошибкой.FOR-Loop variable 'i' may be undefined after loop

Код:


Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    btn1: TButton;
    procedure btn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
implementation

{$R *.dfm}

procedure TForm1.btn1Click(Sender: TObject);
var
  x,y:Integer;
  i:Byte;
  img: array[1..100]of TImage;
begin //
Randomize;
For i:=1 to 50 do
 begin
 img[i]:=Timage.Create(Form1);
 img[i].Picture.LoadFromFile(intToStr(Random(4))+'.bmp');
 img[i].AutoSize:=True;
 img[i].Transparent:=True;
 end;
i:=i+1;
if i=49 then
 begin
 i:=1;
 end;
img[i].Left:=x;
img[i].Top:=y;
Img[i].Parent:=Form1;
end;

end.


Почему то выдает ошибку: "[Warning] Unit1.pas(45): FOR-Loop variable 'i' may be undefined after loop".


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 15.11.2011 в 23:09.
Loadgame вне форума Ответить с цитированием
Старый 15.11.2011, 23:08   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

во-первых, это не ошибка, а предупреждение.
а во-вторых, абсолютно правильно он это делает.
For i:=1 to 50 do

цикл закончился.
чему равна переменная I ?!
а вы к ней ещё единицу прибавляете, потом ещё сравниваете с 49. Это Вы всё делаете ПОСЛЕ цикла.

вот умный компилятор и говорит - делайте, что хотите, но учтите, что после цикла переменная может иметь ЛЮБОЕ значение (0, 1, 50, 51 или любое другое...)
Вам нужно пересмотреть код и понять, что Вы собственно пытаетесь получить, "мучая" переменную цикла ПОСЛЕ цикла..
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
For loop control variable must be simple local variable Hehe Общие вопросы Delphi 11 26.12.2011 19:42
for loop control variable must be simple local variable obsession Общие вопросы Delphi 10 08.05.2011 12:20
Выдает ошибку [Warning] Unit1.pas(225): FOR-Loop variable Neroaz Общие вопросы Delphi 8 26.03.2010 02:20
Вопрос об ошибке For loop control variable must... dr.Chas Общие вопросы Delphi 2 08.01.2010 22:35
Assignment to FOR-Loop variable zotox Помощь студентам 4 24.03.2009 11:32