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当错误是微不足道的时候使用一个特别"干净" ,事实上,正如预期的那样,就像在这种情况下一样.
您可以通过以下方式捕获异常
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)
如果您只需要确保转换返回有效数字