[MSXML] recuperation memoire ?
	
	
		Bonjour, j'ai developper une surcouche a msxml pour une appli, bon je suis arrivé a faire ce que je voulais mais j'ai un probleme avec la fonction "Release()" il me semble qu'elle sert a recuperer la memoire (vidage des listes, des nodes... et du docXML), ptet je me trompe... en tout cas je fais ca et ca marche pas   8O 
	Code:
	
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
   |  
 
CNoeud* res = new CNoeud();
	MSXML2::IXMLDOMDocumentPtr doc;
	HRESULT hr;
 
	CoInitialize(NULL);
 
	hr = doc.CreateInstance(__uuidof(DOMDocument40));
	if (FAILED(hr)) 
	{
		res = NULL;
	}
	else
	{
		doc->async = VARIANT_FALSE;
 
		if(doc->load(NomFichier.c_str()) == VARIANT_TRUE)
		{
			MSXML2::IXMLDOMNodeListPtr pere = doc->selectNodes(balise.c_str());
			MSXML2::IXMLDOMNodePtr noeud_courant = NULL ;
 
			int count = pere->length;
			int i = 0;
			while( count-- )
			{
				pere->get_item(i++,&noeud_courant);
				//ajout d'un fils
				CNoeud* fils = new CNoeud();
				res->AjouterFils(&fils,noeud_courant,&res);
 
				//appel recursif avec le nouveau fils
				GetNoeuds(noeud_courant,&fils);
			}
		}
 
	}
	doc->Release();
	CoUninitialize();
 
	return res;
} | 
 et la c'est le drame a lexecution, il veut pas faire le Release sur mon doc, meme si il a bien chargé et donc pas null, meme le CoUninitialize() marche pas je comprends pas...
Voila si vous avez eu ce pb ou si vous voyer mon probleme Merci,
Sans vouloir abusé si quelqu'un sait faire pour créer un doc unicode via MSXML... Merci
	 
	
	
	
		Re: [MSXML] recuperation memoire ?
	
	
		
	Citation:
	
		
		
			
				Envoyé par BainE
				
			
			Bonjour, j'ai developper une surcouche a msxml pour une appli, bon je suis arrivé a faire ce que je voulais mais j'ai un probleme avec la fonction "Release()" il me semble qu'elle sert a recuperer la memoire (vidage des listes, des nodes... et du docXML), ptet je me trompe... en tout cas je fais ca et ca marche pas   8O 
	Code:
	
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
   |  
 
CNoeud* res = new CNoeud();
	MSXML2::IXMLDOMDocumentPtr doc;
	HRESULT hr;
 
	CoInitialize(NULL);
 
	hr = doc.CreateInstance(__uuidof(DOMDocument40));
	if (FAILED(hr)) 
	{
		res = NULL;
	}
	else
	{
		doc->async = VARIANT_FALSE;
 
		if(doc->load(NomFichier.c_str()) == VARIANT_TRUE)
		{
			MSXML2::IXMLDOMNodeListPtr pere = doc->selectNodes(balise.c_str());
			MSXML2::IXMLDOMNodePtr noeud_courant = NULL ;
 
			int count = pere->length;
			int i = 0;
			while( count-- )
			{
				pere->get_item(i++,&noeud_courant);
				//ajout d'un fils
				CNoeud* fils = new CNoeud();
				res->AjouterFils(&fils,noeud_courant,&res);
 
				//appel recursif avec le nouveau fils
				GetNoeuds(noeud_courant,&fils);
			}
		}
 
	}
	doc->Release();
	CoUninitialize();
 
	return res;
} | 
 et la c'est le drame a lexecution, il veut pas faire le Release sur mon doc, meme si il a bien chargé et donc pas null, meme le CoUninitialize() marche pas je comprends pas...
Voila si vous avez eu ce pb ou si vous voyer mon probleme Merci,
Sans vouloir abusé si quelqu'un sait faire pour créer un doc unicode via MSXML... Merci
 
			
		
	 
 Perso je n'utilise plus tous ces trucs complexes a base de COM.
Ca fait du code pas très clair.
Je ne sais pas répondre a ta question par contre je t'encourage à utiliser TinyXML ou d'autres librairies(expat, xerces) open-source et independante de la plateforme.
Si tu as besoin d'aide je pourrais t'aider