|
7 O3 a& T+ i6 E9 Y$ d& u$ a2 o2 X% ~在onKeyPress事件中作一些处理
1 _7 X, K) z, y m/ A使得输入只能是数字和一个小数点 |1 n6 n/ D, e: o1 k
( B- c8 a' z2 x0 O" Q+ ^- j! I& @
然后设置相应的标志。
/ Z0 m# L' C* I8 n. Y) F" j. I
" P: q# U2 F0 v1 U Y当然,还有另外的办法,就是用pos函数来查找是否有小数点
' S/ _! ?4 _0 e. z8 p: F' K; D如果没有,那么就是整数,反之是小暑,但是这个方法有一个缺陷 % G) y; A5 R( ?: m
就是如果输入的不只是数字,还有字母的话,那么判断显然是错误的。 5 ?1 M: j7 j" k$ A7 K
此外,如果是以指数方式表示的,那么前两种的判断方法都会复杂起来。 # d* K# F: n f
5 H" b, O6 ^2 k5 x/ W
于是,还有第三个办法,用好Exception
/ m% Y4 r0 \4 ~7 X' g2 }首先,用Edit1->Text.ToInt,如果不产生异常,表明是整数,反之用
8 R2 [4 X* i4 {% rEdit1->Text.ToDouble,如果不产生异常,那么是小数,反之 4 |4 k" I: l f; C2 q
就表明不是合法的数字 5 r9 v" i! T% T# n/ s) ?
这个办法最方便。大概的程序代码如下
( p$ `, I# H4 X
7 B$ y+ Z3 x7 x' @' C try 7 @: v* V5 t2 w3 R: G+ o5 F
{ ( w9 T4 c6 K0 k; c
Edit1->Text.ToDouble(); ) Q# t" M4 c: r- J4 |$ ]
try 6 |8 a# i$ R5 L" K. H* L h
{ ; q( o# D# r/ M$ D0 t
Edit1->Text.ToInt(); 2 r4 g2 X l5 s& q
ShowMessage("is a int");
9 d. d6 Z" F' k5 z+ a. D* B1 M }
$ ^0 V# O0 D D4 P catch(const EConvertError &e)
8 e* M' Y- i: R' j( C! ~ { # ]# `8 m& M# ^7 @0 z; S0 m+ i/ G
ShowMessage("is a double"); 9 t/ g4 z7 v! t, ?4 P% J* [; a
}
+ l' i# x" O5 L- C' Q0 A }
! D( R& L( j, ^) q# l! _: H catch(const EConvertError &e) - H0 O$ I( Y' @$ g+ l( f% G5 q
{ 0 ]. ]: E6 h4 Q7 A5 |& H
ShowMessage("not a int ot double");
2 S( z& u" N0 q9 i, j# O } - ^5 h, v2 x1 E# j6 X' k9 S* H
1 q) {0 @* B4 x) p/ t2 r; v) e上面的代码已通过调试 |