|
! C4 t4 H8 m7 |8 U! B6 F; l8 ~, L
在onKeyPress事件中作一些处理 % \7 `7 e$ j/ z7 F$ N
使得输入只能是数字和一个小数点 ' f0 _' f. \: I3 J
0 q& R, o0 v* g! J8 O9 V; G p" o然后设置相应的标志。
: O' y( d: z! s 5 ]7 p1 J% G8 {1 n4 n
当然,还有另外的办法,就是用pos函数来查找是否有小数点 + w9 k/ ]. L& k) R4 L# F
如果没有,那么就是整数,反之是小暑,但是这个方法有一个缺陷 4 L4 B$ r' ] j3 O, x$ h
就是如果输入的不只是数字,还有字母的话,那么判断显然是错误的。
$ U0 [( D+ ]1 Y# Q) L此外,如果是以指数方式表示的,那么前两种的判断方法都会复杂起来。
6 C+ T$ D6 n# J% }* l' j! N
* G; G! o: F( a于是,还有第三个办法,用好Exception
2 S+ K% A. M" m5 q首先,用Edit1->Text.ToInt,如果不产生异常,表明是整数,反之用 5 N2 m2 Q8 q3 |+ d+ j
Edit1->Text.ToDouble,如果不产生异常,那么是小数,反之
3 F3 t. Z! L! f# K; `$ q; F就表明不是合法的数字
6 r, K6 ^ O1 C4 `8 I9 ]这个办法最方便。大概的程序代码如下 ) h9 W# T. B7 j4 N3 E- L& M
, {/ ^7 v& ^8 Q* u6 n9 |, U# y8 R8 ?- w
try & Q0 t3 L9 Z; k& ^9 X9 f4 Y& f& K
{ % l# z) C& w- b
Edit1->Text.ToDouble(); 9 m7 A* ^: a9 B" I5 F% `/ w5 s2 a7 F
try : c- G" Y1 Z" B! z* `& l
{
6 C- }$ w& s2 N/ B Edit1->Text.ToInt(); ' T# }) a2 p) f- p: Z
ShowMessage("is a int"); : _" R& v: b2 L; M4 F
}
N5 i% r4 R5 [* _ catch(const EConvertError &e)
' ^, Z. _% y% ^2 p6 x% H; J; d {
9 x3 S" r# W2 G# T6 ?7 D9 \ ShowMessage("is a double"); 9 \! u# Y: i% c C$ }
}
3 k# l7 ^ r5 @, P } . Y$ j. f1 x' a+ w% H7 e8 V% ]
catch(const EConvertError &e)
! X R% h, }+ f/ r { ! s8 E& U9 q- T: A
ShowMessage("not a int ot double");
& O* H% x2 t9 i1 } }
+ z0 b6 I, Q F2 ^) A6 J- S& m 2 l; ^9 N( o/ X9 d0 w* n# g% m
上面的代码已通过调试 |