QQ登录

只需要一步,快速开始

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

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

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

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

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

& k2 u5 M% p( h5 c9 ?: Z, d

在onKeyPress事件中作一些处理

& Q; }6 v( W! A* X, d$ N

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

4 D E/ w8 w; @, B

% L. s# O0 g. e: F% i( O* x

然后设置相应的标志。

# L1 R! h6 A1 N, n, ]7 _7 E

2 O5 C8 P' n: N( s

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

6 k: v8 @6 n6 B( ^5 p$ E9 Q% z; I

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

. j- G' [0 A% b- D' a- H# }4 X% R

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

+ S4 A6 B9 k1 {, a3 Z

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

9 `9 x% p* T0 ^$ j( c

i) F" ^7 q4 w& x' n

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

, o& r% Y5 a6 g$ o7 l% ^

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

( j1 ^, m' I" q+ m9 ?

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

/ N( \, n! ^7 E9 f, ?( O

就表明不是合法的数字

9 |7 X, F, P% K2 c0 X

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

9 K) T* J7 P( K; \* v& l* n! R |

) n' j5 g! H5 a" S1 M8 D0 C9 b$ \& _

try

, m* A$ X `$ ~) ?

{

3 a3 f& _' y3 W1 K4 _% y

Edit1->Text.ToDouble();

) t% K8 F4 ]% R2 l: a

try

" o% Y$ Y' { g8 S

{

. l) v( a: t% A9 b/ j

Edit1->Text.ToInt();

" h3 R6 E$ p c1 n5 g" d

ShowMessage("is a int");

, V/ C$ l: f2 w K% C" T- [

}

) S* w5 j1 C! i, e) x

catch(const EConvertError &e)

4 j# R: x. ~8 R1 l+ H8 U

{

) V/ q. \2 L! M n4 g( C- N; u

ShowMessage("is a double");

r2 t# E/ F; c- [4 e

}

# l) y8 C& ~5 ?! H5 l4 m+ ] U

}

* X5 w9 A1 }, m- A- m8 \4 D+ h/ T, c9 X

catch(const EConvertError &e)

; L$ E, N" p$ y' }2 ?5 K# f

{

0 M2 `, X! [8 A( F1 L

ShowMessage("not a int ot double");

4 h0 @* n, }8 a5 B3 P" C

}

1 I0 v$ K6 _3 z& N7 A$ a- ?0 Y1 n

/ P1 K7 P7 ^$ f' O0 d( r d

上面的代码已通过调试

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 10:54 , Processed in 0.423524 second(s), 52 queries .

回顶部