|
" \7 t) _3 p% ?4 z# c' @) K4 k
在onKeyPress事件中作一些处理 - N- O2 }, S& `, E
使得输入只能是数字和一个小数点
6 S, C( F/ n, K9 K/ Z
- [. p; m' ~! T; l$ D然后设置相应的标志。
# y. o0 J& m6 f8 a4 K R2 m; b6 t
c4 ` g# R& o. _8 X; f当然,还有另外的办法,就是用pos函数来查找是否有小数点 5 P' T# ?) ?/ U* x2 C* ~
如果没有,那么就是整数,反之是小暑,但是这个方法有一个缺陷
8 H8 Z# x I6 `, F6 r! d3 ^2 |9 O" L就是如果输入的不只是数字,还有字母的话,那么判断显然是错误的。 - l! M# g; Z1 t1 h( q# ~1 I/ X& ~
此外,如果是以指数方式表示的,那么前两种的判断方法都会复杂起来。 , j; u7 |4 v% g7 Y
& D2 A' ?) U+ U c- o于是,还有第三个办法,用好Exception * I- U! p; ]/ G- }
首先,用Edit1->Text.ToInt,如果不产生异常,表明是整数,反之用 & C1 V3 \% b# H' j" r: ]/ j) w
Edit1->Text.ToDouble,如果不产生异常,那么是小数,反之
9 ~# W1 k8 M4 l8 X就表明不是合法的数字
* x! X* q, m8 b Q6 r! g3 R8 r8 z这个办法最方便。大概的程序代码如下 6 z$ \6 r' h! X) B9 ?4 [
( p. @! d# @6 A: |: `$ h& s
try ) K' W) d& o: _# x" V
{ 3 z& s/ T/ `3 m8 j& H+ |; z" y5 u
Edit1->Text.ToDouble(); ( r6 W' B6 b' d2 c6 Z+ Q' {/ Q# L- H# n
try
' B: b; l4 T! K! Z {
! }3 K6 d- n! o9 e7 B ?4 | Edit1->Text.ToInt(); * o6 p; z) F& P+ ]
ShowMessage("is a int"); 3 P- j. ]' m1 R- t8 X4 a
}
' U- p( e9 ^( A' A% @. D% \4 l( E, H catch(const EConvertError &e)
. e, Q8 @4 y! V1 k9 m {
6 N5 O; O6 n( ?8 R: Q ShowMessage("is a double"); " w8 C0 B& |2 w& W/ j# q2 l8 g* C
}
( i3 J: s: h# K }
l9 \; w. l/ a; A+ O catch(const EConvertError &e) % [( r5 A* u9 ~ M. J* p
{ 2 B6 B. d" e- @4 V) r
ShowMessage("not a int ot double");
, o5 P( c, X& t/ H" { }
. V* w! R* y8 @7 c9 ]7 v2 I ' R9 M: _4 F) T
上面的代码已通过调试 |