私はダイスロールをシミュレートし、それらをチャート(ストリングリストのセット)の値と比較するプログラムを持っています。私は現在、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;
デバッガなしで実行すると、それを捕まえることができます(プログラムをWindowsでは直接起動します)。 –
if(ShootingRadio.Checked = True)と(TryStrToInt(Edit1.Text、BS))のStrToIntを変更してからbegin ... end; –
tryとexceptの間に例外が発生した場合は、メッセージボックスが表示されます。したがって、私は例外が提起されていると結論づけています。新しい字下げが助けになりますか? –