首页
社区
课程
招聘
求助怎么实现识别文本框里是数值而不是其他字符
发表于: 2010-3-28 22:08 3450

求助怎么实现识别文本框里是数值而不是其他字符

2010-3-28 22:08
3450
求助怎么实现识别文本框里是数值而不是其他字符
下面的代码不能识别小数点个数  请大牛们指点下 谢谢了
BOOL DataLegitimacy(TCHAR * DataString)
{
        if(NULL==DataString[0])
        {
                return FALSE;
        }
        else
        {
                int i,n;
                n = strlen(DataString);
                for(i=0;i<n;i++)
                {
                        if((DataString[i]<'0'||'9'<DataString[i])&&('.'!=DataString[i]))
                        {
                                break;
                        }
                }
                if(i<n)      /*这句代码是什么作用啊?*/
                {
                        return FALSE;
                }
                else
                {
                        return TRUE;
                }
        }
}

[注意]看雪招聘,专注安全领域的专业人才平台!

收藏
免费
支持
分享
最新回复 (8)
雪    币: 105
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
不是数字0到9并且不为小数点时,返回FALSE
2010-3-28 22:26
0
雪    币: 16
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
isdigit 函数 试试

上面的循环是检测 每个字符是否都是数字.
if(i<n)      /*这句代码是什么作用啊?*/
    {
      return FALSE;
    }
如果i<n 说明 字符串中有非数字的字符(如果没有非数字的字符,那么执行完后,i = n)

for(i=0;i<n;i++)
{
      if((DataString[i]<'0'||'9'<DataString[i])&&('.'!=DataString[i]))
      {
        return FALSE;
      }
}
return TRUE;
就OK了
2010-3-28 22:45
0
雪    币: 90
活跃值: (91)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
楼上的我还是没明白啊 把我的代码截取一部分就ok?
2010-3-28 22:55
0
雪    币: 1981
活跃值: (771)
能力值: ( LV13,RANK:420 )
在线值:
发帖
回帖
粉丝
5
if(i<n) /*这句代码是什么作用啊?*/
{
return FALSE;
}


3L说了。
要想保证只有一个小数点可以增加一个小数点计数

1
2
3
4
5
6
7
8
9
10
11
12
int iPointNum=0;
for(i=0;i<n;i++)
    {
      if((DataString[i]<'0'||'9'<DataString[i])&&('.'!=DataString[i]))
      {
        break;
      }
      if ('.' =DataString[i] && iPointNum !=0)
         {
           break;
         }
    }
2010-3-28 23:04
0
雪    币: 11
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
break后循环不就over了吗,那么它只要发现有一个是字母的就判断编辑框里不是数字,它不能判断字母和数字混合的那种
2010-3-28 23:16
0
雪    币: 90
活跃值: (91)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
先感谢大牛们解答!

================
我终于明白3楼说的了 最后i=n时 循环停止了  如果i<n说明 循环执行到一半就出来了 说明遇到不合格品了

=====================
那我把代码改成这样 看看行不行
BOOL DataLegitimacy(TCHAR * DataString)
{
  if(NULL==DataString[0])
  {
    return FALSE;
  }
  else
  {
    int i,n,iponitnum=0;
    n = strlen(DataString);

    for(i=0;i<n;i++)

     {
         if ('.' ==DataString[i]) iponitnum++;
     }

     {
        if ('.' =DataString[i] && iPointNum !=0)   
           break;
      }

    {
      if((DataString[i]<'0'||'9'<DataString[i])&&('.'!=DataString[i]))
      {
        break;   
      }
    }
   
    if(i<n)   
    {
      return FALSE;
    }
    else
    {
      return TRUE;
    }
  }
}
2010-3-28 23:55
0
雪    币: 90
活跃值: (91)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
哦 耶 终于搞定了   感谢几位的解答  ,感谢看雪  !!!!! 其他论坛没人答复我的  在这里一会会就搞定了

最终的VC代码我粘贴出来吧

#include "stdafx.h"
#include <windows.h>
#include <windowsx.h>
#include "resource.h"
#include "MainDlg.h"

BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch(uMsg)
{
HANDLE_MSG(hWnd, WM_INITDIALOG, Main_OnInitDialog);
HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand);
HANDLE_MSG(hWnd,WM_CLOSE, Main_OnClose);
}

return FALSE;
}

BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{
return TRUE;
}



BOOL DataLegitimacy(TCHAR * DataString)
{
if(NULL==DataString[0]||'.'==DataString[0])
{
return FALSE;
}
else
{
int i,n,ipointnum=0;
n = strlen(DataString);

for(i=0;i<n;i++)
{

{
if ('.' ==DataString) ipointnum++;
}

{
if('.' ==DataString[n-1])
{break;}
}

{
if ('.' ==DataString && ipointnum >1)
{break;}
}

{
if((DataString<'0'||'9'<DataString)&&('.'!=DataString))
{
break;
}
}
}
if(i<n)
{
return FALSE;
}
else
{
return TRUE;
}
}
}

void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
switch(id)
{
case IDC_OK:
{
TCHAR str1[256];

GetDlgItemText(hwnd,IDC_EDIT1,str1,sizeof(str1));
if(DataLegitimacy(str1)==TRUE)
{
MessageBox(hwnd,TEXT("ok是合法的数值!"),TEXT("问好"),MB_OK);
}
else
{
MessageBox(hwnd,TEXT("no不合法,请正确输入!!!"),TEXT("警告啊"),MB_OK);
}



}
break;
default:
break;
}
}

void Main_OnClose(HWND hwnd)
{
EndDialog(hwnd, 0);
}
2010-3-29 00:28
0
雪    币: 11
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
哎呀,这么玩还不睡
2010-3-29 01:29
0
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册