6

私はサイコロをシミュレートし、それらをチャート (文字列リストのセット) の値と比較するプログラムを持っています。現在、TEdit から値を取得しています。ボックスが空の場合、Try/Except ステートメントでキャッチする必要がある EConvertError が発生しますが、そうではありません。感想とアドバイス?以下のコード、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 に答える