delphi7中的未知运行时错误,“无效的浮点运算”。没有崩溃

时间:2018-04-14 10:34:37

标签: delphi runtime-error delphi-7 pascal

美好的一天,我需要就我写的一段代码提出建议。这是我的delphi7学校教科书中的一项活动,所以你可以想象我仍然是pascal的新手。 我的程序工作正常并得到我需要的结果,但我收到一个奇怪的: 运行时“无效的浮点运算”消息,程序不会崩溃。由于我的知识有限,我无法找到这个错误背后的原因。这是令人困惑的,因为我没有使用任何实数,但请看看。 如果您需要其他信息,请与我们联系 提前谢谢,我愿意学习!

   private
    arrLearners : array of string;
    arrMod : array of string;   
procedure TfrmPortfolios.btnEnterClick(Sender: TObject);
var
numL,k,d,a : integer;
l :string;
begin
  k:=0;
  numL:=0;

  repeat
   numL := StrToInt(InputBox('Enter names','How many learners in Subject?
   (Max 30):','30'));
   until
   numL<=30;
 SetLength(arrLearners, numL);

 for k:=0 to numL-1 do
   begin
        arrLearners[k]:='Student No'+IntToStr(k+1);
   end;

 k:=0;
 d := numL div 5; //used to see for every which learner will go to moderation. I.e if d=3 then every third student.
 if numL <=9 then // below 9, d=1 then it's every student anyways
    begin
         for k:=0 to NumL-1 do
            begin
                 SetLength(arrMod,NumL);
                 arrMod[k]:=arrLearners[k];
            end;
    end
    else
      begin
           a := numL div d;
           SetLength(arrMod, a);
           for k:=0 to a-1 do
               begin

                    arrMod[k] := arrLearners[(k*d) +1];
               end;
       end;

 k:=0;
 redOutput.Lines.Add('Students sent for moderation:'+#13);
 for k:=0 to numL-1 do
   begin
        l:= arrMod[k];
        redOutput.Lines.Add(l);
   end;

end;

1 个答案:

答案 0 :(得分:0)

确保已启用范围检查和溢出检查选项。你可以使用编译器指令{$ R +,O +}在代码中全局或本地启用它们。范围检查是一个非常有用的东西 - 它可以节省你很多时间调试奇怪的问题。