数字版本比较(不考虑带字母的版本号)
来源:互联网 发布:excel 库存软件 编辑:程序博客网 时间:2024/05/01 09:35
//if (0 == iResult)//旧
//{
// strResult = _T("旧版本");
//}
//else if(1 == iResult)//新
//{
// strResult = _T("新版本");
//}
//else if (10 == iResult)
//{
// strResult = _T("版本相同");
// //用作异常处理或者其他用途,暂时不启用
//}
int CVersionCompareDlg::CompareVersion(CString strNewVersion, CString strOldVersion)
{
int iResult = -1;
if (strNewVersion.IsEmpty() || strOldVersion.IsEmpty())//版本数据异常
{
return iResult;
}
int iNewStartIndex = 0, iNewEndIndex = 0;//新版本的开始、结束序号
int iOldStartIndex = 0, iOldEndIndex = 0;//旧版本的开始、结束序号
int iNewVersion = 0, iOldVersion = 0;//新、旧子版本
CString strNewSubVersion, strOldSubVersion;//新、旧子版本
char *szVersion = NULL;
do
{
iNewEndIndex = strNewVersion.Find('.', iNewStartIndex);
iOldEndIndex = strOldVersion.Find('.', iOldStartIndex);
strNewSubVersion.Empty();//清空子版本
strOldSubVersion.Empty();//清空子版本
iNewVersion = 0;
iOldVersion = 0;
//新版本处理 开始
if (-1 == iNewEndIndex)//没有找到点号
{
//取剩下的全部字符
strNewSubVersion = strNewVersion.Mid(iNewStartIndex);
//设置开始位置
iNewStartIndex = strNewVersion.GetLength();
}
else//找到了点号
{
//取区段字符
strNewSubVersion = strNewVersion.Mid(iNewStartIndex, iNewEndIndex - iNewStartIndex);
//设置开始位置
iNewStartIndex = iNewEndIndex + 1;
}
if (!strNewSubVersion.IsEmpty())//找到字符则计算版本号
{
iNewVersion = GetVersionInt(&strNewSubVersion);
}
else//没有找到字符版本置0
{
iNewVersion = 0;
}
//新版本处理 结束
//旧版本处理 开始
if (-1 == iOldEndIndex)//没有找到点号
{
//取剩下的全部字符
strOldSubVersion = strOldVersion.Mid(iOldStartIndex);
//设置开始位置
iOldStartIndex = strOldVersion.GetLength();
}
else//找到了点号
{
//取区段字符
strOldSubVersion = strOldVersion.Mid(iOldStartIndex, iOldEndIndex - iOldStartIndex);
//设置开始位置
iOldStartIndex = iOldEndIndex + 1;
}
if (!strOldSubVersion.IsEmpty())//找到字符则计算版本号(没有找到的情况下已经置0)
{
iOldVersion = GetVersionInt(&strOldSubVersion);
}
else//没有找到字符版本置0
{
iOldVersion = 0;
}
//旧版本处理 结束
//比较版本 开始
if (iNewVersion > iOldVersion)
{
return 1;
}
else if (iNewVersion < iOldVersion)
{
return 0;
}
//比较版本 结束
} while (!(iNewEndIndex == -1 && iOldEndIndex == -1));
iResult = 10;
return iResult;
}
// 删除字符串中开始部分的0
int CVersionCompareDlg::GetVersionInt(CString *pstrSource)
{
int iSourceLength = pstrSource->GetLength();
int iVersion = 0;
int iTemp = 0;
TCHAR chTemp[2];
for (int i = 0; i < iSourceLength; i ++)
{
if ('0' != pstrSource->GetAt(i))
{
chTemp[0] = pstrSource->GetAt(i);
iTemp = atoi((char *)chTemp);
if (0 != iTemp)
{
for(int iMi = 0; iMi < iSourceLength - i - 1; iMi ++)
{
iTemp = iTemp * 10;
}
}
iVersion += iTemp;
}
}
return iVersion;
}
//{
// strResult = _T("旧版本");
//}
//else if(1 == iResult)//新
//{
// strResult = _T("新版本");
//}
//else if (10 == iResult)
//{
// strResult = _T("版本相同");
// //用作异常处理或者其他用途,暂时不启用
//}
int CVersionCompareDlg::CompareVersion(CString strNewVersion, CString strOldVersion)
{
int iResult = -1;
if (strNewVersion.IsEmpty() || strOldVersion.IsEmpty())//版本数据异常
{
return iResult;
}
int iNewStartIndex = 0, iNewEndIndex = 0;//新版本的开始、结束序号
int iOldStartIndex = 0, iOldEndIndex = 0;//旧版本的开始、结束序号
int iNewVersion = 0, iOldVersion = 0;//新、旧子版本
CString strNewSubVersion, strOldSubVersion;//新、旧子版本
char *szVersion = NULL;
do
{
iNewEndIndex = strNewVersion.Find('.', iNewStartIndex);
iOldEndIndex = strOldVersion.Find('.', iOldStartIndex);
strNewSubVersion.Empty();//清空子版本
strOldSubVersion.Empty();//清空子版本
iNewVersion = 0;
iOldVersion = 0;
//新版本处理 开始
if (-1 == iNewEndIndex)//没有找到点号
{
//取剩下的全部字符
strNewSubVersion = strNewVersion.Mid(iNewStartIndex);
//设置开始位置
iNewStartIndex = strNewVersion.GetLength();
}
else//找到了点号
{
//取区段字符
strNewSubVersion = strNewVersion.Mid(iNewStartIndex, iNewEndIndex - iNewStartIndex);
//设置开始位置
iNewStartIndex = iNewEndIndex + 1;
}
if (!strNewSubVersion.IsEmpty())//找到字符则计算版本号
{
iNewVersion = GetVersionInt(&strNewSubVersion);
}
else//没有找到字符版本置0
{
iNewVersion = 0;
}
//新版本处理 结束
//旧版本处理 开始
if (-1 == iOldEndIndex)//没有找到点号
{
//取剩下的全部字符
strOldSubVersion = strOldVersion.Mid(iOldStartIndex);
//设置开始位置
iOldStartIndex = strOldVersion.GetLength();
}
else//找到了点号
{
//取区段字符
strOldSubVersion = strOldVersion.Mid(iOldStartIndex, iOldEndIndex - iOldStartIndex);
//设置开始位置
iOldStartIndex = iOldEndIndex + 1;
}
if (!strOldSubVersion.IsEmpty())//找到字符则计算版本号(没有找到的情况下已经置0)
{
iOldVersion = GetVersionInt(&strOldSubVersion);
}
else//没有找到字符版本置0
{
iOldVersion = 0;
}
//旧版本处理 结束
//比较版本 开始
if (iNewVersion > iOldVersion)
{
return 1;
}
else if (iNewVersion < iOldVersion)
{
return 0;
}
//比较版本 结束
} while (!(iNewEndIndex == -1 && iOldEndIndex == -1));
iResult = 10;
return iResult;
}
// 删除字符串中开始部分的0
int CVersionCompareDlg::GetVersionInt(CString *pstrSource)
{
int iSourceLength = pstrSource->GetLength();
int iVersion = 0;
int iTemp = 0;
TCHAR chTemp[2];
for (int i = 0; i < iSourceLength; i ++)
{
if ('0' != pstrSource->GetAt(i))
{
chTemp[0] = pstrSource->GetAt(i);
iTemp = atoi((char *)chTemp);
if (0 != iTemp)
{
for(int iMi = 0; iMi < iSourceLength - i - 1; iMi ++)
{
iTemp = iTemp * 10;
}
}
iVersion += iTemp;
}
}
return iVersion;
}
- 数字版本比较(不考虑带字母的版本号)
- 黑马程序员 C#统计一行字符串中各个字母出现的频率(不考虑大小写,不考虑其他字符)
- 统计一个字符串中大写字母字符,小写字母字符,数字字符出现的次数。(不考虑其他字符)
- 应用版本名称的比较1.1.1和2.2.2(包括非纯数字的版本号比较)
- 比较全的验证码类(数字,字母,汉字)
- 比较全的验证码类(数字,字母,汉字)
- 带版本号的so文件生成不带版本号的软链接
- 不带css的版本
- 比较带点(.)版本号大小
- 练习5-15 增加选项-f,使得排序过程不考虑字母大小写之间的区别。例如比较a和A时认为它们相等
- “超长数字减法(不考虑符号,仿人计算) ”的改进
- 版本更新相关,CFBundleVersion和CFBundleShortVersionString的比较,获取版本号
- iOS app版本更新和版本号的比较
- 生成指定长度带数字和字母的
- NewInt终极版本(不考虑用int赋值NewInt,因为弄不粗来啊妹妹的)
- jsp 比较清晰的验证码(字母和数字的)
- ASP数字、字母验证码(带随机杂点)
- Java中的大小写字母相互转换(不利用Java自带的方法)
- PBOC借贷记和小额支付为Java卡带来新商机
- 改变文件或目录的访问权限命令
- 需求变更 迁就or拒绝
- C#中调用Windows API时的数据类型对应关系
- 迷宫问题c++代码
- 数字版本比较(不考虑带字母的版本号)
- Linux下time/timestamp相关。
- QA的几件“小事”,谈谈我们QA的座右铭,提升我们的操守。
- Windows ce的体系结构和功能
- SQL_UDF:Split like VB function
- SQL注入攻击-来自微软安全博客的建议
- 计算机常用端口
- 无向图中求两个顶点间的所有路径算法
- vb 进程控制 查询 关闭