This issue appears only with numbers, bigger, then 12 including.

Those two pictures captured in one time. How it is even possible?

`For` loop must go from 0 to 12-1=11, doesn't it?

Nevertheless, when I use `while` loop instead, it works fine.

Is it my fault or Delphi's?

P.S. Code down bellow.
![1](https://i.stack.imgur.com/RvRsr.png)
![1](https://i.stack.imgur.com/lKxTa.png)

```
unit Unit1;
interface

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

type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    Button1: TButton;
    Edit1: TEdit;
    Button2: TButton;
    Label1: TLabel;
    Button3: TButton;
    Label2: TLabel;
    Label3: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure StringGrid1KeyPress(Sender: TObject; var Key: Char);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  n:Integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);    //Button, that sets array length
var
  i, index:Integer;
begin
    val(Edit1.Text, n, index);                  
    if(index<>0) then
    begin
      ShowMessage('Wrong number');
      Edit1.Clear();
      exit;
    end;
    StringGrid1.ColCount:=n;
    for i:=0 to n-1 do                           
      StringGrid1.Cells[i,0]:=IntToStr(i+1);
    StringGrid1.SetFocus();
end;

procedure TForm1.Button2Click(Sender: TObject);        //Main button
var
  i, index:Integer;
  a:array[0..10] of Real;
  denom, sum:Real;
begin
  i:=0;
  sum:=0;
  denom:=-1;

 //that for loop from screenshot is here

  for i:=0 to n-1 do
  //while i<=(n-1) do
  begin
    Val(StringGrid1.cells[i,1], a[i], index);    
    if(index<>0) then
    begin
      ShowMessage('Wrong number with ' + IntToStr(i+1) + ' Id');
      StringGrid1.Col:=i;
      StringGrid1.Row:=1;
      StringGrid1.SetFocus();
      exit;
    end;
    a[i]:=a[i]/denom;                            
    sum:=sum+a[i];
    StringGrid1.Cells[i,2]:=FloatToStrF(a[i],ffFixed,5,3);    
    denom:=-denom*(i+2);
    //Inc(i);
    end;
    Label2.Caption:=FloatToStrF(sum,ffFixed,5,3);
end;

//code down bellow just allow to go to another cell by pressing Enter

procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
  if  (Key=#13) and (StringGrid1.Col=(n-1)) then   
      Button2.SetFocus()
  else if (Key=#13) and (StringGrid1.Col<>(n-1)) then
      StringGrid1.Col:=StringGrid1.Col+1;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  Close();
end;

end.

```