现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

比较软件的版本号函数

2012-11-28 00:26 工业·编程 ⁄ 共 1117字 ⁄ 字号 暂无评论

比较软件的版本号函数,版本号的形式为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;
}

给我留言

留言无头像?