void ArchiveModule::ReloadLanguage( const TCHAR* lpLanguage ) { string strPath = m_strModuleName; CutToSlash (strPath); Language* pLanguage = nullptr; Language* pEnglishLanguage = nullptr; string strMask = strPath+_T("*.lng"); WIN32_FIND_DATA FindData; bool bResult = false; HANDLE hSearch = FindFirstFile( strMask, (WIN32_FIND_DATA*)&FindData ); if ( hSearch != INVALID_HANDLE_VALUE ) { do { string strFileName = strPath+FindData.cFileName; pLanguage = new Language(); if ( pLanguage->LoadFromFile(strFileName) ) { string strLanguage = pLanguage->GetLanguage(); if ( strLanguage == lpLanguage ) { if ( m_pLanguage ) delete m_pLanguage; m_pLanguage = pLanguage; bResult = true; } else { if ( strLanguage == _T("English") ) //case?? { if ( !pEnglishLanguage ) //нам два не надо pEnglishLanguage = pLanguage; else delete pLanguage; } else delete pLanguage; } } else delete pLanguage; } while ( !bResult && FindNextFile(hSearch, (WIN32_FIND_DATA*)&FindData) ); FindClose (hSearch); } if ( pEnglishLanguage ) { if ( !bResult ) { if ( m_pLanguage ) delete m_pLanguage; m_pLanguage = pEnglishLanguage; } else delete pEnglishLanguage; } }