请问如何判断edit中的text是否为合法的real或integer? ( 积分: 20 )

  • 主题发起人 主题发起人 星幻子
  • 开始时间 开始时间

星幻子

Unregistered / Unconfirmed
GUEST, unregistred user!
这样以至于用strtoint或strtofloat不会抱错
 
逐个字符判断,只有数字或者.并只出现一次的.
 
请看 val 函数的帮助
 
trystrtoint()

trystrtofloat()
 
你可以用
try
strotoint()
exception
MessageBox()
end;
要不让 Edit 不输入数字和'.' 以外的字符
 
delhpi正解
 
加个异常处理就可以了
 
var
a:string;
b:float;
a:=edit1.text;
if not trystrtofloat(a,b) then
showmessage('你输入的字符并非FLOAT类型');

刚申请的号麻烦给点分咯,谢谢
 
还是用try 吧,限制输入控制不了,万一写俩小数点呢?
 
对了 估计 用正则表达式 可以
 
上面的方法总结一下:
1、在输入时做限制,比如OnKeyPress事件中判断
if not (Key in ['0'..'9', '.', #8] then
Key := #0;
2、处理时用Try结构
try
except
end;
3、用Try函数
trystrtoint()
trystrtofloat()
4、用Val函数
...看帮助
5、逐个判断Edit的字符
tmpStr := Edit1.Text;
for i := 1 to Lenght(tmpStr) do
if tmpStr in ['0'..'9', '.'] then
Result := Result + tmpStr;
6、正则表达式
...不懂怎么用,呵呵
 
接受答案了.
 
后退
顶部