比較軟體的版本號碼函數

來源:互聯網
上載者:User

比較軟體的版本號碼函數,版本號碼的形式為3..0.2.1 支援無限位。

 

/*++

Routine Description:

 1.比較版本號碼, 遞迴實現

History:

 13-November-2007 13:42 - 劉峻聰 - Create

--*/
BOOL CUpdateFun::IsNewVersion(CString strOldVersion, CString strNewVersion)
{
    if (strOldVersion == _T("") && strNewVersion == _T(""))
    {
        return FALSE; // 相等,不是新版本
    }

    int oldVer = 0; // 取舊版本的第一個版本位
    int newVer = 0; // 取新版本的第一個版本位
    int posOldVer = 0;    // 位標,用於舊版本
    int posNewVer = 0;    // 位標,用於新版本

    posOldVer = strOldVersion.Find(_T("."), 0);
    oldVer = posOldVer<0 ? atoi(strOldVersion) : atoi(strOldVersion.Left(posOldVer));   

    posNewVer = strNewVersion.Find(_T("."), 0);
    newVer = posNewVer<0 ? atoi(strNewVersion) : atoi(strNewVersion.Left(posNewVer));   

    if (oldVer < newVer)
    {
        return TRUE;
    }
    else if (oldVer == newVer)
    {
        CString strOldVersion1 = _T(""); // 舊版本
        CString strNewVersion1 = _T(""); // 新版本

        if (posOldVer > -1)
        {
            strOldVersion1 = strOldVersion.Right(strOldVersion.GetLength()-posOldVer-1);
        }

        if (posNewVer > -1)
        {
            strNewVersion1 = strNewVersion.Right(strNewVersion.GetLength()-posNewVer-1);
        }

        return IsNewVersion(strOldVersion1, strNewVersion1);
    }

    return FALSE;

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.