QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3217|回复: 0
打印 上一主题 下一主题

判断EDIT框输入的是否为数字

[复制链接]
字体大小: 正常 放大
韩冰        

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

跳转到指定楼层
1#
发表于 2005-1-26 12:27 |只看该作者 |倒序浏览
|招呼Ta 关注Ta

9 I. [' m: u$ }, s

在onKeyPress事件中作一些处理

4 o7 C) U0 L7 j' @

使得输入只能是数字和一个小数点

4 y/ v4 o) q. p5 ?% m

2 q7 T# w1 F8 T+ q

然后设置相应的标志。

3 _, A" ~3 d1 Y

* ?" p3 V; g" P" S

当然,还有另外的办法,就是用pos函数来查找是否有小数点

7 P4 q1 b9 X6 x, Y# l! D) d, `# `

如果没有,那么就是整数,反之是小暑,但是这个方法有一个缺陷

# [9 ^3 E H2 m

就是如果输入的不只是数字,还有字母的话,那么判断显然是错误的。

! s9 F) {3 o$ c, ]4 b

此外,如果是以指数方式表示的,那么前两种的判断方法都会复杂起来。

* s2 g- @# l3 d# r$ e5 ~

0 k5 H6 t! o: ]: p7 s+ a

于是,还有第三个办法,用好Exception

, A, H, w7 @% n' N9 t+ ]

首先,用Edit1->Text.ToInt,如果不产生异常,表明是整数,反之用

5 n" X4 h( |9 P" ?

Edit1->Text.ToDouble,如果不产生异常,那么是小数,反之

7 V8 E6 [$ F5 K T1 l

就表明不是合法的数字

% l' f( M: r- {6 ?0 q% S3 z

这个办法最方便。大概的程序代码如下

& Z; G* c" J2 b9 {

2 Z- l. a G# o7 E# c

try

; s, l6 v$ J% ^7 }6 A

{

; O+ Q2 }4 \4 T9 C4 P" @6 p$ G

Edit1->Text.ToDouble();

4 g. q. R4 ?3 b3 H; S

try

3 }! S9 ]: Z# T6 q% x( o

{

0 M: v/ S8 X6 p, e' Y* ^9 @1 d! q

Edit1->Text.ToInt();

$ I/ Z4 J- }+ R! z0 C2 y

ShowMessage("is a int");

" t1 x3 @! x; ~$ p2 V/ l* {+ u

}

- N; j0 R: b% @0 p: p

catch(const EConvertError &e)

) O, I1 E% C9 @, f+ w4 W3 N

{

9 J( [$ S* E8 c0 I( Z

ShowMessage("is a double");

( }( i9 E$ E7 X* R

}

$ @" p3 t) Q4 j# M/ Y b }$ R

}

' C. l/ b( R2 Q4 a0 i7 j) z1 B. u& B

catch(const EConvertError &e)

5 e$ c& k! z& i5 z. Y, `) C( I5 k

{

2 u3 q6 U5 a' R, k7 w

ShowMessage("not a int ot double");

S# X" S4 Q. y" i3 P: F

}

9 Y% X4 h0 E/ m j2 f, u) C+ Y4 {

2 V3 j2 y& n1 I) q

上面的代码已通过调试

zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
您需要登录后才可以回帖 登录 | 注册地址

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2026-8-10 19:31 , Processed in 0.369962 second(s), 52 queries .

回顶部