|
5 N% H0 s. {9 c0 @7 B# h4 h% Q8 T
在onKeyPress事件中作一些处理 - S/ X: ~; O- p' p
使得输入只能是数字和一个小数点
6 o- J' C* K) A0 }$ \
: J; J4 [, z7 F1 l- K然后设置相应的标志。
" i3 b W* `9 Z2 t0 S ( ^5 @9 j/ h2 U5 h! ~
当然,还有另外的办法,就是用pos函数来查找是否有小数点 ( z; n3 Y9 T- R8 l+ A4 o5 _
如果没有,那么就是整数,反之是小暑,但是这个方法有一个缺陷
. Y* B* Y$ c. t9 _2 I就是如果输入的不只是数字,还有字母的话,那么判断显然是错误的。
6 I! [- `: K r/ f: b/ k# C此外,如果是以指数方式表示的,那么前两种的判断方法都会复杂起来。 ( N! z/ |7 q( t6 F8 v% P
* N7 B# z3 b" q8 X# G, v
于是,还有第三个办法,用好Exception , n% s4 r M% y8 N1 w, R5 t
首先,用Edit1->Text.ToInt,如果不产生异常,表明是整数,反之用 + Z- J4 J# ~) ]# C4 R4 ]
Edit1->Text.ToDouble,如果不产生异常,那么是小数,反之
0 q; E6 ~# J9 i" p3 g就表明不是合法的数字
% l; H& q% @5 b7 A O这个办法最方便。大概的程序代码如下 , W2 r& T6 c) s6 J% }" C6 Q
/ i! M$ }6 X6 n, e, [ try
+ x! S* P1 y# y; `7 A { " ~- O6 K2 D- q! L) \" _
Edit1->Text.ToDouble(); 2 n6 H% l# r3 `* c3 g% T ~# p
try - s1 @& V1 O4 |3 f' `( @* ]4 r
{
; B2 ]# [8 i* H2 u4 k% h+ G2 ` Edit1->Text.ToInt(); : N. P5 H$ @7 m
ShowMessage("is a int"); ! K2 v" X9 ^8 L$ z( A& D: g! @
} 8 w, u' U% D* |$ f+ Z) p
catch(const EConvertError &e)
" \5 X# v& O9 m( V! M { ' Z4 a& P, f( [9 B
ShowMessage("is a double"); , S! u( @; S7 Q$ X, n' N/ F
} ) p9 D5 V& m: r$ G' D
}
. H; S0 S) {* b6 x( r; @ catch(const EConvertError &e) - B4 a) ^: G* h) x* Z
{
: n, Z* N6 y# i2 |" _ ShowMessage("not a int ot double"); 4 w* g- ^5 @7 N% U' V0 x1 _
}
" r3 W$ J n( [ V J( U 7 M2 Y5 |0 w& d1 D4 \% g
上面的代码已通过调试 |