假设我有个文本框ID_TEST(m_strTS),往里边输入 1,2,3,4,5,6-9,10。单击OK,如何能返还一个MessageBox总和为10.只求代码,不会的编程菜鸟别说原理,我只求代码,谢谢各位高手给出代码,谢谢了。

解决方案 »

  1.   

    不好意思各位高手,我没表达清楚,再次说一下就是一个文本框内,输入11,12,13-19,20,这10个数,意思也就是11,12,13一直到20,一共是10个数,-的意思就是从多少到多少页,单击一个OK按钮,之后自动算出有多少个数,不是总和,不知道明白没明白意思,就是一个计算器的东西,只算加法的,或者说1,2-100,这就是100个数,算个数的,单击OK如何算出这是100个数。
      

  2.   


    CString strText(_T(""));
    GetDlgItemText(IDC_EDIT1, strText);
    LPCTSTR szToken = _T(" ,");
    int curPos = 0;
    CString strTmp(_T(""));
    int nCount = 0;
    while(_T("") != (strTmp = strText.Tokenize(szToken, curPos)))
    {
    ++nCount;
    }
    strText.Format(_T("%d"), nCount);
    AfxMessageBox(strText);
      

  3.   

    高手可以问下Tokenize你是如何定义的吗?
      

  4.   

    这个应该可以在VC6下编译#define MAX_BUFFER 512
    TCHAR strText[MAX_BUFFER] = {0};
    GetDlgItemText(IDC_EDIT1, strText, MAX_BUFFER);
    LPCTSTR szToken = _T(" ,");
    int curPos = 0;
    CString strTmp(_T(""));
    int nCount = 0;
    TCHAR* token = _tcstok(strText, szToken);
    while(token)
    {
    ++nCount;
    token = _tcstok(NULL, szToken);
    }
    strTmp.Format(_T("%d"), nCount);
    AfxMessageBox(strTmp);
      

  5.   

            int num = 1;
    UpdateData();
    if(m_strNum.IsEmpty())
    return;
    int len = m_strNum.GetLength();
    int i;
    for(i = 0; i < len; i++)
    {
    if(m_strNum.GetAt(i) == ',')//','隔开
    num++;
    }
    CString str;
    str.Format("%d",num);
    MessageBox(str);
      

  6.   

    void CTotalDlg::OnButton1() 
    {
    int num = 1;
    UpdateData();
    if(m_strNum.IsEmpty())
    return;
    int len = m_strNum.GetLength();
    int i;
    for(i = 0; i < len; i++)
    {
    if(m_strNum.GetAt(i) == ',')//'£¬'¸ô¿ª
    num++;
    else if(m_strNum.GetAt(i) == '-')
    num += ComputeNum(m_strNum,i);
    }
    if(num == 0)
    num = 1;
    CString str;
    str.Format("%d",num);
    MessageBox(str);
    }int CTotalDlg::ComputeNum(CString str, int pos)
    {
    int i,pos1,pos2;
    CString num1,num2;
    for(i = pos; i >= 0; i--)
    {
    if(str.GetAt(i) == ',')
    {
    pos1 = i;
    break;
    }
    }
    num1 = str.Mid(pos1+1,pos-pos1-1);
    pos2 = str.Find(',',pos);
    if(pos2 == -1)
    num2 = str.Mid(pos+1,str.GetLength()-pos-1);
    else
    num2 = str.Mid(pos+1,pos2-pos-1);
    int n1 = atoi(num1);
    int n2 = atoi(num2);
    return abs(n2-n1);
    }
      

  7.   

    不行啊 编译通不过啊,VC6.0环境的,num都报错