128 lines
2.2 KiB
C++
128 lines
2.2 KiB
C++
#include "stdafx.h"
|
|
#include "windows.h"
|
|
#include "tchar.h"
|
|
#include ".\versioninfo.h"
|
|
|
|
|
|
CVersionInfo::CVersionInfo(void)
|
|
{
|
|
for( int i = 0; i < MAX_VERSION_COUNT; i++)
|
|
m_byVer[i] = 0;
|
|
}
|
|
|
|
CVersionInfo::~CVersionInfo(void)
|
|
{
|
|
|
|
}
|
|
|
|
|
|
byte CVersionInfo::GetVersion( int nNum )
|
|
{
|
|
if( nNum < 0 || nNum >= MAX_VERSION_COUNT )
|
|
return 0;
|
|
|
|
return m_byVer[nNum];
|
|
}
|
|
|
|
void CVersionInfo::Init()
|
|
{
|
|
for( int i = 0; i < MAX_VERSION_COUNT; i++ )
|
|
m_byVer[i] = 0;
|
|
}
|
|
|
|
|
|
bool CVersionInfo::SetVersion( int nNum, byte byVer )
|
|
{
|
|
if( nNum < 0 || nNum >= MAX_VERSION_COUNT )
|
|
return false;
|
|
|
|
m_byVer[nNum] = byVer;
|
|
|
|
return true;
|
|
}
|
|
|
|
unsigned int CVersionInfo::GetTotalVersion()
|
|
{
|
|
unsigned int nTotalVer = 0;
|
|
|
|
for( int i = 0; i < MAX_VERSION_COUNT; i++ )
|
|
{
|
|
if( i == (MAX_VERSION_COUNT - 1) )
|
|
nTotalVer += m_byVer[i];
|
|
else
|
|
nTotalVer += m_byVer[i] * ( 256*( MAX_VERSION_COUNT-(i+1) ) );
|
|
}
|
|
|
|
return nTotalVer;
|
|
}
|
|
|
|
// 01.02.03 과 같은 문자열에서 각각의 버전을 뽑아내는 함수.
|
|
bool CVersionInfo::SetVersionFromString( char* pszVersion )
|
|
{
|
|
if( pszVersion == NULL || (strcmp( pszVersion, "" ) == 0) )
|
|
return false;
|
|
|
|
Init();
|
|
|
|
string strVersion = pszVersion;
|
|
int nCnt = 0;
|
|
|
|
while( strVersion.size() != 0)
|
|
{
|
|
if( nCnt >= MAX_VERSION_COUNT )
|
|
break;
|
|
|
|
int nIdx = (int)strVersion.find('.');
|
|
if( nIdx == string::npos )
|
|
{
|
|
if( !strVersion.empty() )
|
|
{
|
|
m_byVer[nCnt] = atoi( strVersion.c_str() );
|
|
}
|
|
|
|
strVersion.clear();
|
|
}
|
|
else
|
|
{
|
|
string strVer = strVersion.substr( 0, nIdx );
|
|
m_byVer[nCnt] = atoi( strVer.c_str() );
|
|
strVersion.erase( 0, nIdx + 1);
|
|
nCnt++;
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
|
|
//현재 입력되어 있는 버전정보를 문자열 형태로 반환한다.
|
|
bool CVersionInfo::GetStringVersion( char* OUT pszVersion, int nSize )
|
|
{
|
|
if( pszVersion == NULL || (strcmp( pszVersion, "" ) == 0) )
|
|
return false;
|
|
|
|
memset( pszVersion, 0, nSize );
|
|
char szTemp[MAX_VERSION_CHAR_SIZE];
|
|
|
|
for( int i = 0; i < MAX_VERSION_COUNT; i++ )
|
|
{
|
|
memset( szTemp, 0, MAX_VERSION_CHAR_SIZE );
|
|
|
|
_snprintf( szTemp, MAX_VERSION_CHAR_SIZE, "%d\0", m_byVer[i] );
|
|
//
|
|
//#ifdef _DEBUG
|
|
// MessageBox( NULL, szTemp, NULL, MB_OK );
|
|
//#endif
|
|
|
|
if( i != (MAX_VERSION_COUNT - 1) )
|
|
strcat( szTemp, ".\0" );
|
|
|
|
strcat( pszVersion, szTemp );
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
|
|
|