如何只接受编辑控件中的数字?

Jap*_*ter 7 delphi exception-handling

通常我会执行以下操作将字符串值保存到数据库中

DataModule.tbTableNumber.Value := StrToFloat(edtNumber.text);
Run Code Online (Sandbox Code Playgroud)

现在问题出现在用户输入无法转换为数字的内容时.我怎么能阻止这个?一个人可以使用异常吗?我将如何编写此异常?

我正在使用Delphi XE2.

And*_*and 13

最好的解决方案(恕我直言)是使用TryStrToFloat:

procedure TForm1.Button1Click(Sender: TObject);
var
  myfloat: double;
begin
  if TryStrToFloat(Edit1.Text, myfloat) then
    DataModule.tbTableNumber.Value := myfloat
  else
    ShowMessage('Incorrect value.');
end;
Run Code Online (Sandbox Code Playgroud)

我不认为try..except当错误是微不足道的时候使用一个特别"干净" ,事实上,正如预期的那样,就像在这种情况下一样.


Dam*_*uid 5

您可以通过以下方式捕获异常

  try
    val := StrToFloat(edtNumber.text);
  except
    on E: EConvertError do
    begin
      ShowMessage( 'Entered Data is not a valid Floating Point number' );
    end;
  end;
Run Code Online (Sandbox Code Playgroud)

你可能也想看一下

StrToFloatDef( edtNumber.text, -1 )
Run Code Online (Sandbox Code Playgroud)

如果您只需要确保转换返回有效数字