下面一段程序为什么循环的进度条只能循环的百分之九十几呢?
   procedure TF_kaoshixx.Button1Click(Sender: TObject);
  var xkbh,kcdm,kd,st_id,student_team,id:string;  gd,n,m,i,week,wek:integer;
  begin
  
   T_kb.Close;
   T_kb.Filter:='team='''+dbedit1.Text+'''';
   T_kb.Filtered:=true;
   T_kb.Open;
   n:=T_kb.recordcount;
   i:=0;
   gauge.Progress:=0;
   T_kb.First;
   
  while not T_kb.Eof do
   begin
   xkbh:=T_kb['teach_id'];
   gd:=2000+strtoint(xkbh);
   id:=inttostr(gd);
   
   kcdm:=T_kb['teach_code'];
   week:=T_kb['teach_to_week'];
   kd:=kcdm[length(kcdm)];
   if kd='0' then
   wek:=week+1
   else
   wek:=week;
      T_kb.AppendRecord([id,T_kb['teach_name'],T_kb['teach_grade'],T_kb['teach_class'],T_kb['teach_type'],
   T_kb['teach_class_id'],T_kb['teach_student_number'],T_kb['teach_teacher'],T_kb['teach_xuan'],T_kb['teach_code'],
   T_kb['teach_xf'],wek,wek,T_kb['teach_department'],T_kb['teach_department_id'],T_kb['team'],
   T_kb['teach_memo'],now]);
   inc(i);
   T_kb.Next;
   gauge.Progress:=(100*i) div n;
   end;   
   Button1.Enabled:=false;
   B_xuesheng.Click;
   showmessage('Éú³ÉÍê±Ï');
     end;