|
/ \, J3 a% Q# R5 r S- h8 o
在onKeyPress事件中作一些处理
! S# a e6 |: K. U0 m) ]) S使得输入只能是数字和一个小数点 , b# |. z# u! G8 V
& ^' o0 e: e, x5 N7 A8 U8 F1 \ O然后设置相应的标志。 8 i: M& h. R% c& M1 N" p
7 [$ f# r4 x$ b4 b
当然,还有另外的办法,就是用pos函数来查找是否有小数点 8 m' J+ i" t# r# s
如果没有,那么就是整数,反之是小暑,但是这个方法有一个缺陷 9 c$ y) C7 b, E( p% R4 e$ F; h
就是如果输入的不只是数字,还有字母的话,那么判断显然是错误的。
2 H/ \1 {, L( Y. Z) z; [此外,如果是以指数方式表示的,那么前两种的判断方法都会复杂起来。
0 c3 J2 V$ v1 w2 Y: M3 _
8 ?; R- v2 n0 w* X# w于是,还有第三个办法,用好Exception
3 g2 c) n- X7 U, b首先,用Edit1->Text.ToInt,如果不产生异常,表明是整数,反之用
' z5 ^2 D' Y8 q* `/ OEdit1->Text.ToDouble,如果不产生异常,那么是小数,反之 # ~, ]1 Y% Z: n3 V
就表明不是合法的数字 + V4 O0 U1 [* Y1 l
这个办法最方便。大概的程序代码如下
. L4 B& A# L8 s7 L+ H' {# V& h3 ~5 p ; C$ s. t M* Q3 N3 L4 J$ j& A
try
& i& [% t' R3 ?- n1 v/ U5 q+ m {
3 L! {9 t3 q) R4 y Edit1->Text.ToDouble(); ! D& F; f8 C2 ] a. s9 u! r, B9 C
try
3 X% F& }( @& ^9 c8 [ {
3 B: O) F9 `- g- n6 \7 M8 u Edit1->Text.ToInt(); % N/ i4 {( Y2 P
ShowMessage("is a int"); % f E' [/ S; r. j
}
" X1 H+ ~6 Y5 L- n catch(const EConvertError &e) # G: f$ v9 [; H, Y
{ / Y- g" M' i1 \+ t q
ShowMessage("is a double"); 8 {7 C2 _- O" h. a7 S0 P
}
8 U7 d+ J3 c1 b } } & g8 K6 |6 F7 e! i% k
catch(const EConvertError &e) ) V5 K7 K! c, N5 Z% x
{
/ V& T9 O. r0 B6 V ShowMessage("not a int ot double"); $ ~0 d* K3 z! \% f
} 9 E9 d& h% I8 D% A
8 o% ^" h2 W( @' {( S! V: U+ E5 U上面的代码已通过调试 |