程序执行后,如果出现小数点数值就会报错,如‘69.5不是一个有效的整型值’,代码如下,错误在哪里
procedure TFm_ZlFp.ToolButton1Click(Sender: TObject);
var
   i,j,sum0 :integer;
begin
  for i:=4 to SGlist.rowcount-1 do
     begin
     Sum0:=0;
     SGlist.cells[3,i]:= '';
     for j:=4 to SGlist.colcount -1 do    //  列
       begin
       if sglist.Cells[j,i]<>'' then
         sum0:=sum0+strtoint(sglist.Cells[j,i]);
       end;
     SGlist.cells[3,i]:= inttostr(sum0);
     if strtoint(SGlist.cells[2,i]) <> sum0 then
        SGlist.cells[0,i]:='*'
       else  SGlist.cells[3,i]:='';   end;
end;

解决方案 »

  1.   

    这个提示很明显了吧...........strtoint(sglist.Cells[j,i])这个出错,
    sum0定义成Double,用StrToFloat吧
      

  2.   


    直接用StrToFloat也不行啊,sum0不用重新定义么?新人,还希望说的详细点
      

  3.   

    strtoint转不了,还是有 StrToFloat  转吧
      

  4.   

    var
      sum0 :Double;sum0:=sum0+strtofloat(sglist.Cells[j,i]);
      

  5.   


    var
      i,j,sum0,k:integer;if sglist.Cells[j,i]<>'' then
    begin
      if trystrtoint(sglist.Cells[j,i],k) then
      begin
        sum0:=sum0+k;
      end
      else
      begin
        Showmessage('第'+inttostr(i)+'行'+inttostr(j)+'列输入错误');
        exit;
      end;
    end;
     
      

  6.   


    如果出现sglist.Cells[j,i]为空字串,你的函数还是要有问题
    可以这样
    sum0:=sum0+strtofloatdef(sglist.Cells[j,i], 0);
    逻辑问题是没有,但要看实际的数据内容了。