如何用最少的代码实现文本框只能输入正负数

pan7861 2004-11-22 10:42:24
要求不能输入字母等符号,但开头可以包含“+”“-”也不能包含一个以上的加减号。数字可以有小数点。比如0,-1,-2,-1.2,+20.0000等。
...全文
121 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
pan7861 2004-11-22
  • 打赏
  • 举报
回复
楼上这位兄弟,代码比较长啊,我是想找个简洁的方式。不过还是感谢你。我觉得算法还可以改进以提高速度。
andrew_ma 2004-11-22
  • 打赏
  • 举报
回复
if (chNum[1]=='\0') //判断字符串是否只有一位
{
if ((chNum[0]<'0')||(chNum[0]>'9')) //只有一位的情况下,首位是否为数字
{
AfxMessageBox("首位错!!!!") ;
return FALSE;
}
}
else
{
if ((chNum[0] == '-')||(chNum[0] == '+')||(('0'<=chNum[0])&&(chNum[0]<='9')))//判断首位是否含有非数字非正负号以外的字母
{
while (chNum[nNum]!='\0') //判断字符串中是否含有非数字非小数点的符号
{
if (chNum[nNum]!='.'&&((chNum[nNum]>'9')||(chNum[nNum]<'0')))
{
AfxMessageBox("wrong,pls put in number!");
return FALSE;
}
else
{
if (chNum[nNum]=='.') //判断是否有多个小数点
{
nA +=1;
if(nA>1)
{
AfxMessageBox("小数点过多!");
return FALSE;
}
}
}
if (nNum>15) //是否超过有效位
{
AfxMessageBox("超过15位有效位!");
return FALSE;
}
nNum++;
}
}
else //判断首位是否错误
{
AfxMessageBox("wrong,pls put in number首位错!");
return FALSE;
}

}
handwolf 2004-11-22
  • 打赏
  • 举报
回复
同意楼上的!
但是你要写一个算法来控制“+-.和数字”的有效顺序!
I_Love_CPP 2004-11-22
  • 打赏
  • 举报
回复
重载OnChar,在其中限制用户输入
crushor 2004-11-22
  • 打赏
  • 举报
回复
把编辑框的关联变量属性直接设成FLOAT?
lmxctds 2004-11-22
  • 打赏
  • 举报
回复
// 当输入为空时,也将返回FALSE
BOOL IsFloat(const char * pcNum)
{
char * pc = pcNum;
BOOL bolPoint = FALSE;
if ('-' == *pc || '+' == *pc)
pc++;
do
{
if ('0' > *pc || '9' < *pc)
if ('.' == *pc)
if (bolPoint)
return FALSE;
else
bolPoint = TRUE;
else
return FALSE
} while(*pc++);

return TRUE;
}

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧