如何验证必须为整数、非负数、非小数且不是字符串的值? (或字母词)来自 InputQuery?
How to validate values that must be integer, non negative, non decimal and not a string? (Or an alphabetic word) from an InputQuery?
我正在使用 InputQuery 从用户那里捕获值,但它只能是整数 (from 1 to 9999999...)
,不能是小数,也不能是字符串(不是 ABCDEF
)或字母数字( A1B2C3
) 而不是特殊的甜菜 (Hi!,
)。在 delphi `RAD STUDIO 2010.
范围是捕获值,然后显示一条消息,告诉用户他必须只输入有效值。
我怎样才能做到这一点?
这很简单:
var
s: string;
i: Integer;
begin
if InputQuery(Caption, 'Please enter a positive integer:', s) then
if TryStrToInt(s, i) and (i > 0) then
ShowMessage('An excellent choice, sir!')
else
ShowMessage('That''s not a positive integer, is it?')
如果用户取消它(这是预期的),这将显示提示并且不执行任何操作。另一方面,如果用户确实输入了一个值,则会使用 TryStrToInt
和简单的符号测试对其进行验证。
请注意,由于布尔短路求值,第二个合取 (i > 0
) 只会在第一个合取 (TryStrToInt(s, i)
) 求得 True
时求值,所以我们永远不会测试未初始化的变量 i
(不过在这种情况下并不重要)。
您可能还想使用 a more sophisticated input box 自动验证对话框中的输入(免责声明:我的网站)。
或者,您可以使用 InputQuery
函数自己的验证功能,这将在用户单击“确定”时验证输入:
var
s: array of string;
i: Integer;
begin
SetLength(s, 1);
if InputQuery(Caption, ['Please enter a positive integer:'], s,
function(const Values: array of string): Boolean
begin
Result := (Length(Values) = 1) and TryStrToInt(Values[0], i) and (i > 0);
if not Result then
ShowMessage('That''s not a positive integer, is it?')
end)
then
ShowMessageFmt('You chose %d. That''s an excellent choice, sir!', [i]);
我正在使用 InputQuery 从用户那里捕获值,但它只能是整数 (from 1 to 9999999...)
,不能是小数,也不能是字符串(不是 ABCDEF
)或字母数字( A1B2C3
) 而不是特殊的甜菜 (Hi!,
)。在 delphi `RAD STUDIO 2010.
范围是捕获值,然后显示一条消息,告诉用户他必须只输入有效值。
我怎样才能做到这一点?
这很简单:
var
s: string;
i: Integer;
begin
if InputQuery(Caption, 'Please enter a positive integer:', s) then
if TryStrToInt(s, i) and (i > 0) then
ShowMessage('An excellent choice, sir!')
else
ShowMessage('That''s not a positive integer, is it?')
如果用户取消它(这是预期的),这将显示提示并且不执行任何操作。另一方面,如果用户确实输入了一个值,则会使用 TryStrToInt
和简单的符号测试对其进行验证。
请注意,由于布尔短路求值,第二个合取 (i > 0
) 只会在第一个合取 (TryStrToInt(s, i)
) 求得 True
时求值,所以我们永远不会测试未初始化的变量 i
(不过在这种情况下并不重要)。
您可能还想使用 a more sophisticated input box 自动验证对话框中的输入(免责声明:我的网站)。
或者,您可以使用 InputQuery
函数自己的验证功能,这将在用户单击“确定”时验证输入:
var
s: array of string;
i: Integer;
begin
SetLength(s, 1);
if InputQuery(Caption, ['Please enter a positive integer:'], s,
function(const Values: array of string): Boolean
begin
Result := (Length(Values) = 1) and TryStrToInt(Values[0], i) and (i > 0);
if not Result then
ShowMessage('That''s not a positive integer, is it?')
end)
then
ShowMessageFmt('You chose %d. That''s an excellent choice, sir!', [i]);