#include ".\versioninfo.h" #include "windows.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 ) 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] ); if( i != (MAX_VERSION_COUNT - 1) ) strcat( szTemp, ".\0" ); strcat( pszVersion, szTemp ); } return true; }