|
. a5 T7 F* d* e8 j. V9 Y3 ]# o+ }在onKeyPress事件中作一些处理
5 I Z+ r+ N5 G* |( t q4 }使得输入只能是数字和一个小数点 , K! G @' h) Q& l; o; D& s
" Q, K9 _5 e6 ]1 V2 Z" ^9 Z然后设置相应的标志。
; N8 f; h' \! N+ G$ f1 ] 1 V# ^. d3 f' o
当然,还有另外的办法,就是用pos函数来查找是否有小数点
, g6 @2 D. j0 j I如果没有,那么就是整数,反之是小暑,但是这个方法有一个缺陷 / r( E' @$ x$ T% y
就是如果输入的不只是数字,还有字母的话,那么判断显然是错误的。 $ i9 |5 o$ _% g" i5 _3 f8 S/ v a6 Z
此外,如果是以指数方式表示的,那么前两种的判断方法都会复杂起来。 & V; P6 L: l* s8 {2 j5 m- B: E& [% b
o/ p9 ?+ x1 X2 p于是,还有第三个办法,用好Exception * n6 A9 z: g' C3 J- o, t
首先,用Edit1->Text.ToInt,如果不产生异常,表明是整数,反之用 " j/ H1 d* B: E3 u$ z( D
Edit1->Text.ToDouble,如果不产生异常,那么是小数,反之 9 Y0 I4 ^) W8 I) c
就表明不是合法的数字 ! v2 r2 O+ o6 i% [# I& `
这个办法最方便。大概的程序代码如下
1 n) p' X: I# U % P' ?+ H, g& {( o
try
2 Q$ m2 C- {+ E {
( `+ d( Z! B3 |8 I% _ Edit1->Text.ToDouble();
( b. U% a* ^0 U% E: B/ } i try
, s: j+ e' F8 g1 G" ~& f) a { 4 R4 f( [0 |0 Z. s: {
Edit1->Text.ToInt(); * M. _/ b3 {8 R0 @5 |: x
ShowMessage("is a int");
H8 U0 ]$ E" W. E3 ?7 l/ ^ }
7 l" k) I V" E catch(const EConvertError &e) 4 k ~6 Q( i+ o5 S5 h' D, @
{
1 K/ r8 P: s9 \; b" X' q5 V ShowMessage("is a double"); 7 I0 s+ M, w( o; t5 |- S+ N
} ! {- R4 [) Q+ E' s' j
}
) h2 ?6 k$ ~3 R" O$ Z# J8 ? catch(const EConvertError &e) m: X8 ]9 l1 k! V
{
! G% {" i. h6 }/ n; X6 [ u ShowMessage("not a int ot double");
5 B2 [5 y1 B2 v4 ~ } 2 A: u1 F. n7 e. ?; q; m& b a& ] y
% s, @5 y o) e& B9 @; h( B' a
上面的代码已通过调试 |