QQ登录

只需要一步,快速开始

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

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

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

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

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

5 I3 n% f8 L' Z7 y* T

在onKeyPress事件中作一些处理

! h; X% s O- D m; |5 ?- Z

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

, C+ X% N/ T/ }1 m

* }1 z9 Z% |( Z& S6 ?

然后设置相应的标志。

# }% J" |+ S4 e/ w

" Y+ H2 l( f7 h. z4 m

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

7 K( d$ U6 e, _1 y: h

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

# g( h9 W) g) e& I {

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

' u' m+ j j& [+ S- y: T1 }0 s

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

4 i* k5 E3 `% D$ G

9 d4 ]5 _ ]: Y/ E" I+ L" V

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

9 |- d/ ]0 W1 {5 o) E

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

( G; l2 D# P$ Q( [6 g, G; Y: X, Y

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

0 u: o+ X9 F( h. m, }! ~- Q

就表明不是合法的数字

5 c5 U, o3 y2 ^ l: W

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

/ B6 ^9 k9 t ?, E6 [6 f, Y1 Z

, f! h( r0 p7 G) X# t" p

try

q( R5 U! d0 D$ S) B" H

{

& e q% X# o7 `& z5 Q7 ?8 P

Edit1->Text.ToDouble();

# N+ S$ ~# d' ?! [* s9 L- U

try

( F: f- k2 L0 D; ~" U* ?

{

- |; `* H+ R3 E$ _5 d' ?! E

Edit1->Text.ToInt();

8 @* m/ v* R) R! G8 ?7 H

ShowMessage("is a int");

4 N. Q0 x+ @) h& y, x

}

2 u% o8 x# N5 i: o

catch(const EConvertError &e)

5 ^" Y, P8 O. I' ?- \+ o

{

2 P% P: }$ i$ f( f0 n/ @# F/ g

ShowMessage("is a double");

" i$ m, ?2 D* d

}

4 S) M9 b; O L7 g) k

}

7 `8 W1 \( `/ F3 {5 o; n

catch(const EConvertError &e)

3 { s; O! i' y

{

( P1 B$ ?# C) W/ w) A

ShowMessage("not a int ot double");

% l8 f$ W5 o8 s3 s

}

; N8 F7 h1 c* q& }) e* A

: c2 a/ ^+ ^$ m" r5 O6 C1 g! [( y

上面的代码已通过调试

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-6-13 20:56 , Processed in 0.415044 second(s), 51 queries .

回顶部