gpt4 book ai didi

delphi - 如何正确格式化和验证编辑控件以仅接受浮点或货币值

转载 作者:行者123 更新时间:2023-12-03 19:44:37 26 4
gpt4 key购买 nike

我有一个应用程序需要在编辑控件中接受浮点或货币值。我的问题是我必须做什么来格式化和验证编辑控件输入,以便它只接受数字、逗号或点(逗号或点取决于系统区域设置)。格式为##.## (45.21)。我想做一种可以控制所有编辑控件的方法,使用 float 格式和验证。

现在我在使用 TryStrToFloat 方法的 OnChange 事件中有代码,但有时我得到“''不是浮点数”错误。

也许你们比我做得更多,并且有一些很好的例子如何正确地做到这一点。

最佳答案

如果您想继续使用相同的验证方法,只需增强您的算法以考虑边缘情况(以及您希望如何管理它)。

例如,您可以考虑接受一个空字符串作为有效输入,并且不抛出异常。您还必须考虑在输入格式错误的情况下如何执行用户交互。例如,如果用户输入了无效数字,您希望阻止用户在同一毫秒内输入值……或者您可以采取更自然的方法(例如,验证直到用户认为一切都正确)。

您还可以通过在输入完成时以非停止方式通知用户来管理验证,只需在违规字段上产生可见效果,如果用户尝试以停止方式(例如使用消息框)保存数据。

一个简单的验证函数可能如下所示:

function IsEditValidFloat(Sender: TEdit; const AcceptBlank: Boolean = True): Boolean;
var
sValue: string;
Temp: Extended;
begin
sValue := Trim(Sender.Text);
if (sValue.Text = '') then
Result := AcceptBlank
else
Result := TryStrToFloat(sValue, Temp);
end;

//you might call this on the OnChangeEvent:
procedure TForm1.Edit1Change(Sender: TObject);
begin
if IsEditValidFloat(Sender as TEdit) then
ChangeDisplayState(Sender, dsValid)
else
ChangeDisplayState(Sender, dsError);
end;

关于delphi - 如何正确格式化和验证编辑控件以仅接受浮点或货币值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5033078/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com