|
5 I3 n% f8 L' Z7 y* T在onKeyPress事件中作一些处理 ! h; X% s O- D m; |5 ?- Z
使得输入只能是数字和一个小数点 , C+ X% N/ T/ }1 m
* }1 z9 Z% |( Z& S6 ?
然后设置相应的标志。 # }% J" |+ S4 e/ w
" Y+ H2 l( f7 h. z4 m当然,还有另外的办法,就是用pos函数来查找是否有小数点 7 K( d$ U6 e, _1 y: h
如果没有,那么就是整数,反之是小暑,但是这个方法有一个缺陷 # g( h9 W) g) e& I {
就是如果输入的不只是数字,还有字母的话,那么判断显然是错误的。 ' u' m+ j j& [+ S- y: T1 }0 s
此外,如果是以指数方式表示的,那么前两种的判断方法都会复杂起来。
4 i* k5 E3 `% D$ G
9 d4 ]5 _ ]: Y/ E" I+ L" V于是,还有第三个办法,用好Exception 9 |- d/ ]0 W1 {5 o) E
首先,用Edit1->Text.ToInt,如果不产生异常,表明是整数,反之用 ( G; l2 D# P$ Q( [6 g, G; Y: X, Y
Edit1->Text.ToDouble,如果不产生异常,那么是小数,反之 0 u: o+ X9 F( h. m, }! ~- Q
就表明不是合法的数字 5 c5 U, o3 y2 ^ l: W
这个办法最方便。大概的程序代码如下
/ B6 ^9 k9 t ?, E6 [6 f, Y1 Z , f! h( r0 p7 G) X# t" p
try
q( R5 U! d0 D$ S) B" H { & e q% X# o7 `& z5 Q7 ?8 P
Edit1->Text.ToDouble();
# N+ S$ ~# d' ?! [* s9 L- U try
( F: f- k2 L0 D; ~" U* ? {
- |; `* H+ R3 E$ _5 d' ?! E Edit1->Text.ToInt(); 8 @* m/ v* R) R! G8 ?7 H
ShowMessage("is a int"); 4 N. Q0 x+ @) h& y, x
} 2 u% o8 x# N5 i: o
catch(const EConvertError &e) 5 ^" Y, P8 O. I' ?- \+ o
{ 2 P% P: }$ i$ f( f0 n/ @# F/ g
ShowMessage("is a double"); " i$ m, ?2 D* d
}
4 S) M9 b; O L7 g) k } 7 `8 W1 \( `/ F3 {5 o; n
catch(const EConvertError &e)
3 { s; O! i' y {
( P1 B$ ?# C) W/ w) A ShowMessage("not a int ot double"); % l8 f$ W5 o8 s3 s
} ; N8 F7 h1 c* q& }) e* A
: c2 a/ ^+ ^$ m" r5 O6 C1 g! [( y
上面的代码已通过调试 |