none
J'ai deux constructions qui résistent dans cette methode RRS feed

  • Question

  • bonjour

    On traque les dernières erreurs

    	unsigned __int64 CIniFile::WriteBool( System::String^ sSectionName, System::String^ sKeyName, bool bValue)
    	{ // 1
    		try
    		{ // 2
    			//A variable to hold the fetched line in wstring format
    			System::String^ sLine;
    			//A variable to hold the position of the searched character
    			unsigned int iPos;
    			//A variable to indicate whether the section in the input parameter is found
    			bool bSectionFound = false;
    			//A variable to indicate whether the section in the input parameter is found
    			bool bKeyFound = false;
    			// Handle to open the INI file in read mode
    			FILE * hInFile;
    			//Handle to open the INI file in write mode
    			FILE * hOutFile;
    			//List to hold all the sections and keys in the INI file
    			List<System::String^>^ sListIni;
    			//Variable to store the wstring equivalent of integer value
    			wchar_t sConvertedValue[MAX_LINE_SIZE];
    			//A variable to hold the position of the searched character
    			unsigned int iKeyPos;
    			size_t len;
    			//Close the INI file that is opened in the constructor
    			if( CWfStream::is_open())
    			{ // 3
    				CWfStream::close();
    			} // 3
    			//Open the INI file in read mode, loop till the end and insert each
    			//line into the list. Close the INI file after the entire file is read.
    			char* s;
    			const wchar_t* chars = (const wchar_t*)(Marshal::StringToHGlobalUni( m_sFileName)).ToPointer();
    			wchar_t* tmp = (wchar_t*)chars;
    			Marshal::FreeHGlobal(IntPtr((void*)chars));
    			s = CStrConv::awcstombs( tmp);
    			hInFile = CWfStream::open( tmp, L"r+", 666);
    			CStrConv::StrFreeA( s);
    			//If the INI file is not open then return FAILURE
    			if (!CWfStream::is_open())
    			{ // 3
    				return FAILURE;
    			} // 3
    			while( CWfStream::eof())
    			{ // 3
    				CWfStream::getline( hInFile, sLine);
    				if (!sLine->Empty)
    				{ // 4
    					sListIni->Add( sLine);
    				} // 4
    			} // 3
    			CWfStream::close();
    			hOutFile = CWfStream::open( tmp, L"r+", 666);
    			//Open the INI file in the write mode
    			//If the INI file is not open then return FAILURE
    			if (!CWfStream::is_open())
    			{ // 3
    				return FAILURE;
    			} // 3
    			System::String^ pListIni;
    			for each( pListIni in sListIni)
    			{ // 3
    				//Check whether the string is a section that is required. If yes,
    				//then set the variable to true
    				CWfStream::writeline( hOutFile, pListIni);
    				if( pListIni == (L"[" + sSectionName + L"]"))
    				{ // 4
    					bSectionFound = true;
    					int index = sListIni->LastIndexOf( System::String^);
    					System::String^ wsText = sListIni->IndexOf( index);
    					if( pListIni == wsText)
    					{ // 5
    						// int swprintf_s( wchar_t *buffer, size_t sizeOfBuffer, const wchar_t *format [, argument]...);
    						len = wcslen( sConvertedValue);
    						swprintf_s( sConvertedValue, len, L"%d", bValue);
    						System::String^ wsTexte = sKeyName + L"=" + gcnew String(sConvertedValue);
    						sListIni->Insert( index, wsText);
    						break;
    					} // 5
    					//Check whether the fetched string is a key that is required. If yes,
    					//then change its value and assign it back to the list and break out
    					//of the while loop.
    					iPos = pListIni->IndexOf( sKeyName);
    					iKeyPos = pListIni->IndexOf(L"=");
    					if(( iPos != wstring::npos) && (sKeyName->Length == iKeyPos))
    					{ // 5
    						pListIni->Empty;
    						len = wcslen( sConvertedValue);
    						swprintf_s(sConvertedValue, len, L"%d", bValue);
    						pListIni = sKeyName + L"=" + gcnew String( sConvertedValue);
    						bKeyFound = true;
    						break;
    					} // 5
    					else
    					{ // 5
    						//If the string is not the required key, then ensure that it is not
    						//the beginning of another section. If it is another section, and
    						//the required key is not found within the given section, insert the
    						//given key and its value into the list before the beginning of the
    						//next section. After inserting the value into the list, decrement
    						//the iterator so that the pointer will point to the beginning of
    						//the inserted line to print it in the INI file.
    						iPos = pListIni->IndexOf(L"[");
    						if (iPos != wstring::npos)
    						{ // 6
    							if (!bKeyFound)
    							{ // 7
    								len = wcslen( sConvertedValue);
    								swprintf_s( sConvertedValue, len, L"%d", bValue);
    								int index = CMDBManager::GetIndex( sSectionName, sKeyName, gcnew String( sConvertedValue));
    								sListIni->Insert( index, sKeyName + L"=" + gcnew String( sConvertedValue));
    							} // 7
    							break;
    						} // 6
    					} // 5
    					CWfStream::writeline( hOutFile, pListIni);
    				} // 4
    				CWfStream::writeline( hOutFile, pListIni);
    			} // 3
    
    			//If the given section itself is not found then, write the section into the INI file
    			if( !bSectionFound)
    			{
    				CWfStream::writeline( hOutFile, L"[" << sSectionName << L"]");
    				CWfStream::writeline( hOutFile, sKeyName + L"=" + bValue);
    			}
    			CWfStream::close();
    			//Open the INI file in read write mode
    			CWfStream::open( m_sIniFileName.c_str(), L"w+", 666);
    			return SUCCESS;
    		}
    		catch(...)
    		{
    			return FAILURE;
    		}
    	}//End of WriteBool method

    avec les erreurs suivantes

    1>..\..\..\..\Utility\IniFileManager\src\IniFile.cpp(581): error C2059: erreur de syntaxe : ')'
    1>..\..\..\..\Utility\IniFileManager\src\IniFile.cpp(582): error C2664: 'int System::Collections::Generic::List<T>::IndexOf(System::String ^)' : impossible de convertir le paramètre 1 de 'int' en 'System::String ^'
    1>          with
    1>          [
    1>              T=System::String ^
    1>          ]
    1>          Aucun opérateur de conversion défini par l'utilisateur disponible, ou
    1>          Il n'existe pas de conversion standard de la forme boxed du type arithmétique en type cible
    1>..\..\..\..\Utility\IniFileManager\src\IniFile.cpp(622): warning C4244: 'initialisation' : conversion de 'unsigned __int64' en 'int', perte possible de données
    1>..\..\..\..\Utility\IniFileManager\src\IniFile.cpp(636): error C2784: 'std::basic_ostream<_Elem,_Traits> &std::operator <<(std::basic_ostream<_Elem,_Traits> &,const std::basic_string<_Elem,_Traits,_Alloc> &)' : impossible de déduire l'argument modèle pour 'std::basic_ostream<_Elem,_Traits> &' à partir de 'const wchar_t [2]'
    1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string(489) : voir la déclaration de 'std::operator <<'
    1>..\..\..\..\Utility\IniFileManager\src\IniFile.cpp(636): error C2784: 'std::basic_ostream<_Elem,_Traits> &std::operator <<(std::basic_ostream<_Elem,_Traits> &,const std::error_code &)' : impossible de déduire l'argument modèle pour 'std::basic_ostream<_Elem,_Traits> &' à partir de 'const wchar_t [2]'
    1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(1085) : voir la déclaration de 'std::operator <<'
    1>..\..\..\..\Utility\IniFileManager\src\IniFile.cpp(636): error C2784: 'std::basic_ostream<_Elem,_Traits> &std::operator <<(std::basic_ostream<_Elem,_Traits> &&,_Ty)' : impossible de déduire l'argument modèle pour 'std::basic_ostream<_Elem,_Traits> &&' à partir de 'const wchar_t [2]'
    1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(968) : voir la déclaration de 'std::operator <<'
    1>..\..\..\..\Utility\IniFileManager\src\IniFile.cpp(636): error C2784: 'std::basic_ostream<char,_Traits> &std::operator <<(std::basic_ostream<char,_Traits> &,unsigned char)' : impossible de déduire l'argument modèle pour 'std::basic_ostream<char,_Traits> &' à partir de 'const wchar_t [2]'
    1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(958) : voir la déclaration de 'std::operator <<'
    1>..\..\..\..\Utility\IniFileManager\src\IniFile.cpp(636): error C2784: 'std::basic_ostream<char,_Traits> &std::operator <<(std::basic_ostream<char,_Traits> &,const unsigned char *)' : impossible de déduire l'argument modèle pour 'std::basic_ostream<char,_Traits> &' à partir de 'const wchar_t [2]'
    1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(951) : voir la déclaration de 'std::operator <<'
    1>..\..\..\..\Utility\IniFileManager\src\IniFile.cpp(636): error C2784: 'std::basic_ostream<char,_Traits> &std::operator <<(std::basic_ostream<char,_Traits> &,signed char)' : impossible de déduire l'argument modèle pour 'std::basic_ostream<char,_Traits> &' à partir de 'const wchar_t [2]'
    1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(944) : voir la déclaration de 'std::operator <<'
    1>..\..\..\..\Utility\IniFileManager\src\IniFile.cpp(636): error C2784: 'std::basic_ostream<char,_Traits> &std::operator <<(std::basic_ostream<char,_Traits> &,const signed char *)' : impossible de déduire l'argument modèle pour 'std::basic_ostream<char,_Traits> &' à partir de 'const wchar_t [2]'
    1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(937) : voir la déclaration de 'std::operator <<'
    1>..\..\..\..\Utility\IniFileManager\src\IniFile.cpp(636): error C2784: 'std::basic_ostream<_Elem,_Traits> &std::operator <<(std::basic_ostream<_Elem,_Traits> &,_Elem)' : impossible de déduire l'argument modèle pour 'std::basic_ostream<_Elem,_Traits> &' à partir de 'const wchar_t [2]'
    1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(898) : voir la déclaration de 'std::operator <<'
    1>..\..\..\..\Utility\IniFileManager\src\IniFile.cpp(636): error C2784: 'std::basic_ostream<_Elem,_Traits> &std::operator <<(std::basic_ostream<_Elem,_Traits> &,const _Elem *)' : impossible de déduire l'argument modèle pour 'std::basic_ostream<_Elem,_Traits> &' à partir de 'const wchar_t [2]'
    1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(851) : voir la déclaration de 'std::operator <<'
    1>..\..\..\..\Utility\IniFileManager\src\IniFile.cpp(636): error C2784: 'std::basic_ostream<char,_Traits> &std::operator <<(std::basic_ostream<char,_Traits> &,char)' : impossible de déduire l'argument modèle pour 'std::basic_ostream<char,_Traits> &' à partir de 'const wchar_t [2]'
    1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(811) : voir la déclaration de 'std::operator <<'
    1>..\..\..\..\Utility\IniFileManager\src\IniFile.cpp(636): error C2784: 'std::basic_ostream<char,_Traits> &std::operator <<(std::basic_ostream<char,_Traits> &,const char *)' : impossible de déduire l'argument modèle pour 'std::basic_ostream<char,_Traits> &' à partir de 'const wchar_t [2]'
    1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(764) : voir la déclaration de 'std::operator <<'
    1>..\..\..\..\Utility\IniFileManager\src\IniFile.cpp(636): error C2784: 'std::basic_ostream<_Elem,_Traits> &std::operator <<(std::basic_ostream<_Elem,_Traits> &,char)' : impossible de déduire l'argument modèle pour 'std::basic_ostream<_Elem,_Traits> &' à partir de 'const wchar_t [2]'
    1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(726) : voir la déclaration de 'std::operator <<'
    1>..\..\..\..\Utility\IniFileManager\src\IniFile.cpp(636): error C2784: 'std::basic_ostream<_Elem,_Traits> &std::operator <<(std::basic_ostream<_Elem,_Traits> &,const char *)' : impossible de déduire l'argument modèle pour 'std::basic_ostream<_Elem,_Traits> &' à partir de 'const wchar_t [2]'
    1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(679) : voir la déclaration de 'std::operator <<'
    1>..\..\..\..\Utility\IniFileManager\src\IniFile.cpp(636): error C2677: '<<' binaire : aucun opérateur global trouvé qui accepte le type 'System::String ^' (ou il n'existe aucune conversion acceptable)
    1>..\..\..\..\Utility\IniFileManager\src\IniFile.cpp(641): error C2065: 'm_sIniFileName' : identificateur non déclaré
    1>..\..\..\..\Utility\IniFileManager\src\IniFile.cpp(641): error C2228: la partie gauche de '.c_str' doit avoir un class/struct/union
    1>          le type est ''unknown-type''
    1>..\..\..\..\Utility\IniFileManager\src\IniFile.cpp(688): error C2065: 'objWfStream' : identificateur non déclaré
    1>..\..\..\..\Utility\IniFileManager\src\IniFile.cpp(688): error C2228: la partie gauche de '.is_open' doit avoir un class/struct/union
    1>          le type est ''unknown-type''
    1>..\..\..\..\Utility\IniFileManager\src\IniFile.cpp(690): error C2065: 'objWfStream' : identificateur non déclaré
    1>..\..\..\..\Utility\IniFileManager\src\IniFile.cpp(690): error C2228: la partie gauche de '.close' doit avoir un class/struct/union
    1>          le type est ''unknown-type''
    1>..\..\..\..\Utility\IniFileManager\src\IniFile.cpp(696): error C2065: 'objStrConv' : identificateur non déclaré
    1>..\..\..\..\Utility\IniFileManager\src\IniFile.cpp(696): error C2228: la partie gauche de '.awcstombs' doit avoir un class/struct/union
    1>          le type est ''unknown-type''
    1>..\..\..\..\Utility\IniFileManager\src\IniFile.cpp(696): error C2228: la partie gauche de '.c_str' doit avoir un class/struct/union
    1>          le type est 'System::String ^'
    1>          voulez-vous utiliser '->' à la place ?
    1>..\..\..\..\Utility\IniFileManager\src\IniFile.cpp(698): error C2065: 'objStrConv' : identificateur non déclaré
    1>..\..\..\..\Utility\IniFileManager\src\IniFile.cpp(698): error C2228: la partie gauche de '.StrFreeA' doit avoir un class/struct/union
    1>          le type est ''unknown-type''
    1>..\..\..\..\Utility\IniFileManager\src\IniFile.cpp(706): error C2784: 'std::basic_istream<_Elem,_Traits> &std::getline(std::basic_istream<_Elem,_Traits> &,std::basic_string<_Elem,_Traits,_Alloc> &)' : impossible de déduire l'argument modèle pour 'std::basic_istream<_Elem,_Traits> &' à partir de 'std::wifstream'
    1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string(479) : voir la déclaration de 'std::getline'
    1>..\..\..\..\Utility\IniFileManager\src\IniFile.cpp(706): error C2784: 'std::basic_istream<_Elem,_Traits> &std::getline(std::basic_istream<_Elem,_Traits> &,std::basic_string<_Elem,_Traits,_Alloc> &)' : impossible de déduire l'argument modèle pour 'std::basic_string<_Elem,_Traits,_Alloc> &' à partir de 'System::String ^'
    1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string(479) : voir la déclaration de 'std::getline'
    1>..\..\..\..\Utility\IniFileManager\src\IniFile.cpp(706): error C2780: 'std::basic_istream<_Elem,_Traits> &std::getline(std::basic_istream<_Elem,_Traits> &,std::basic_string<_Elem,_Traits,_Alloc> &,const _Elem)' : 3 arguments attendus - 2 fournis
    1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string(468) : voir la déclaration de 'std::getline'


    Jean Noël Martin

    lundi 27 juillet 2015 18:03

Réponses

Toutes les réponses

  • Vous pourriez faire un petit effort pour nous aider à vous aider, non ?

    C'est quoi la ligne 581 du fichier IniFile.cpp.

    P.S.: Vous utilisez encore un .INI comme il y a 30 ans, faudrait ce mettre un peu à la page, et ça serait bien moins galère.


    Paul Bacelar, Ex - MVP VC++

    lundi 27 juillet 2015 20:11
    Modérateur
  • J'ai retiré du projet les fonction write: Le fichier compile tel quel

    Jean Noël Martin

    • Marqué comme réponse JeanNoel53 mardi 28 juillet 2015 11:22
    mardi 28 juillet 2015 11:22