문제

MFC, How do I check the CString format is match the IP Format,

For example User input

192.168,1,1 Error format

256.256.2.2 Error format

192.168.2 Error format

Some tip tell for me, thx

도움이 되었습니까?

해결책 2

OK, I find the solution

// precisely 3 periods (.), my ip is save if strCtrlIP
    CString strCheck(strCtrlIP);
    int nPointNum = 0;

    nPointNum = strCheck.Remove('.');

    if(nPointNum != 3)
    {
        AfxMessageBox(_T("IP example:192.168.0.1"));
        return;
    }

    // numbers between periods, 0 <= number <= 255
    strCheck.Format(_T("%s"), strCtrlIP);
    while(strCheck.Find(_T(".")) >= 0)
    {
        int nLoc = strCheck.Find(_T("."));
        int nVal = _ttoi(strCheck.Left(nLoc));
        strCheck = strCheck.Right(strCheck.GetLength() - (nLoc+1)); // egnore point

        if(nVal < nUserLimitDown || nVal > nUserLimitUp || strCheck.IsEmpty())
        {
            AfxMessageBox(_T("IP example:192.168.0.1"));
            return;
        }
    }
    if(_ttoi(strCheck) < nUserLimitDown || _ttoi(strCheck) > nUserLimitUp)
    {
        AfxMessageBox(_T("IP example:192.168.0.1"));
        return;
    }

다른 팁

Search the string, using Find(), Mid() or Tokenize() and validate it's contents, based on a few required rules:

e.g.

  1. no alpha characters
  2. precisely 3 periods (.)
  3. numbers between periods
  4. 0 <= number <= 255
  5. first number > 0
  6. etc...
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top