6

我有一个程序可以模拟掷骰子并将它们与图表(字符串列表集)中的值进行比较。我目前从 TEdit 获得价值。如果该框为空,则会引发一个 EConvertError,我的 Try/Except 语句应捕获该错误,但事实并非如此。想法和建议?下面的代码,Delphi 7。

try
  //Shooting
  if ShootingRadio.Checked then
    BS := StrToInt(Edit1.Text);
  Randomize;
  Roll := RandomRange(1,7);
  Label3.Caption := IntToStr(Roll);
  if (Roll < StrToInt(ShootingHitChart[BS-1])) then
  begin
    Label3.Caption := (IntToStr(Roll)+' Miss');
    RichView1.AddTextNL((IntToStr(Roll)+' Miss'),7,0,1);
    RichView1.Reformat;
  end
  else
  begin
    Label3.Caption := (IntToStr(Roll)+' Hit');
    RichView1.AddTextNL((IntToStr(Roll)+' Hit'),6,0,1);
    RichView1.Reformat;
  end;
except
    MessageBox(0,'No number entered.','Error',mb_OK);
end;
4

1 回答 1

11

在调试器选项中检查了“停止 Delphi 异常”。异常实际上被很好地捕获,但是当你得到它时 IDE 会停止。当您继续运行时,您不会看到异常,而是看到您的消息。在 IDE 之外它会运行良好。

您可以取消选中此选项(我通常会这样做)。当您需要调试一些顽固的问题时,您可以随时重新检查它。

于 2011-10-28T14:18:52.563 回答