|
' G& V1 {3 e1 I6 U
在onKeyPress事件中作一些处理 - d5 O& i9 E' ~ Q- n4 X, N o, I
使得输入只能是数字和一个小数点 $ M, E! C0 t! S0 t( T
; [0 c+ Q( j7 N: S6 P" v$ Y
然后设置相应的标志。 : G+ V* t4 F; ?: p& W9 u
+ _8 P" O. `# |# S* T
当然,还有另外的办法,就是用pos函数来查找是否有小数点 E: \; a ~. }- n/ R
如果没有,那么就是整数,反之是小暑,但是这个方法有一个缺陷
& d1 e6 E4 x4 I8 i6 o+ a/ t3 K就是如果输入的不只是数字,还有字母的话,那么判断显然是错误的。
, [" D. A. l9 L4 q$ g此外,如果是以指数方式表示的,那么前两种的判断方法都会复杂起来。
) N2 t$ \: E: G$ P K 2 R7 z2 g# N7 W' `
于是,还有第三个办法,用好Exception
1 D, B' n& ?: y2 G2 m; F, x首先,用Edit1->Text.ToInt,如果不产生异常,表明是整数,反之用
' I* v' R3 x" S# n) ?Edit1->Text.ToDouble,如果不产生异常,那么是小数,反之
V, ^ v/ L3 S; a9 z( Y* L9 c' P l就表明不是合法的数字 ' H+ p9 u7 u% k+ h) z* J
这个办法最方便。大概的程序代码如下
3 ?% R9 u. q/ d: d- q& ?' D7 T9 J ' _* @' f% H, p" |+ l/ G
try
- m: Y2 V- _( D { 6 S& Z# R* N' U
Edit1->Text.ToDouble();
7 q! U4 }0 ~5 ]7 V+ Q try
: w9 [1 N! f: C; q' h7 B { + j$ s D6 t4 @
Edit1->Text.ToInt();
% Q- g7 m9 n* O7 J# ?& [ ShowMessage("is a int"); & g8 @+ f+ W5 u! x7 N
} ) M/ \& p3 t* Q# j* ^( `
catch(const EConvertError &e) - T/ t+ l$ \7 q' Y0 ?" d
{ $ V. D& N' }4 m4 z' s5 n, ^0 [0 y
ShowMessage("is a double");
7 m( b4 E' U& `3 ~ }
/ Q1 b# z9 W% O0 n } 4 r0 J% d! P( {9 v5 d0 i6 h
catch(const EConvertError &e) 7 q) Z. p( d& |# T/ ^/ f. {
{
, ?& [% z6 d( C; r& w ShowMessage("not a int ot double");
5 Y' y1 S# ^. a5 l9 o8 ?+ b" v& Y) o }
; b/ g, h+ L; u
, K. |9 g. h& k2 Z上面的代码已通过调试 |