Показать сообщение отдельно
  #1  
Старый 23.12.2011, 23:41
Kaktuz Kaktuz вне форума
Начинающий
 
Регистрация: 30.10.2011
Сообщения: 149
Репутация: 10
По умолчанию Ошибка - таймер

В упор не вижу в чем проблема. Не могу понять почему выдает ошибку во время работы приложения. Точнее после запуска таймера.
Суть работы заключается в том что бы очистить определенное количество Edit-тов выбрав их случайным образом. Все данные записываются, проверяются. Но все же что-то не так. Если кто-то нашел ошибку, укажите её пожалуйста
(вроде как таймер не выключается после окончания или выключается раньше времени)
Код:
var
  Form1: TForm1;
  Box: array [1..9] of Integer;
  Rez: array [1..6] of Integer;
  Num: array [1..9] of Integer;
  Ran: Integer;
  Nol: Integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
begin
Randomize;
Nol := 9;
for i:=1 to 9 do
  (FindComponent('Edit' + IntToStr(i)) as TEdit).Text := IntToStr(Random(10));
for i:=1 to 9 do
  Box[i] := StrToInt((FindComponent('Edit' + IntToStr(i)) as TEdit).Text);
Rez[1] := Box[1]+Box[2]+Box[3];
Rez[2] := Box[4]+Box[5]+Box[6];
Rez[3] := Box[7]+Box[8]+Box[9];
Rez[4] := Box[1]+Box[4]+Box[7];
Rez[5] := Box[2]+Box[5]+Box[8];
Rez[6] := Box[3]+Box[6]+Box[9];
for i:=1 to 6 do
  (FindComponent('Label' + IntToStr(i)) as TLabel).Caption := IntToStr(Rez[i]);
for i:=1 to 9 do
  Num[i] := 1;
Timer1.Enabled := True;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Randomize;
Ran := Random(10);
if Ran > 0 then
  begin
  if Num[Ran] = 1 then
    begin
    (FindComponent('Edit' + IntToStr(Ran)) as TEdit).Text := '?';
    Num[Ran] := 0;
    Nol := Nol - 1;
    if Nol = StrToInt(Edit1.Text) then
      begin
      Timer1.Enabled := False;
      ShowMessage('GO!');
      end;
    end;
  end;
end;
Ответить с цитированием