Bonjour tout le monde,

J'ai un problème que je n'arrive pas à réparer.

J'appelle cette fonction :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
TraiterOenologue(Tab,Vin,Doc,VinTrouve);
Je lui envoie donc une structure (Tab) un Vin, un document (xml) et un nom de vin que j'ai trouvé.

Á un certain moment, je vais comparer le nom du vin envoyé à la fonction TraiterOenologie avec le nom d'un vin trouvé dans mon fichier xml.

Ce qu'il devrait faire si le nom envoyé à la fonction n'est pas exactement le même que celui trouvé dans le fichier xml, s'est de revenir sur :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
char* VinTrouve = NULL;
et refaire ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
for (nA=0; (nA < Doc.Attributs.Nombre) && (Doc.Attributs.Tableau[nA].IndiceElement < nE3); nA++);
for (; (nA < Doc.Attributs.Nombre) && (Doc.Attributs.Tableau[nA].IndiceElement == nE3); nA++)
{
								TXmlAttribut& A = Doc.Attributs.Tableau[nA];
								if (strcmp(A.Nom,"nom_du_vin") == 0) VinTrouve = A.Valeur;
								else if(strcmp(A.Nom,"appreciation")==0) AppreciationAAjouter = A.Valeur;
}
Le problème est qu'il revient ici :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
					for (nE3=nE2+1; (nE3 < Doc.Elements.Nombre) && (Doc.Elements.Tableau[nE3].IndiceParent >= nE2); nE3++)
						{
							TXmlElement& E3 = Doc.Elements.Tableau[nE3];
							if ( (E3.IndiceParent == nE2) && (strcmp(E3.Nom,"vin") == 0) )
							{
								char* VinTrouve = NULL;
								//!!!!Attention!!!! le prix est un char* qui transformera ensuite en double avec un atol
								char* PrixVin = 0;
								for (nA=0; (nA < Doc.Attributs.Nombre) && (Doc.Attributs.Tableau[nA].IndiceElement < nE3); nA++);
								//il va revenir à chaque fois ici jusqu'à temps que nA soit inférieur à Doc.Attributs.Nombre
								for (; (nA < Doc.Attributs.Nombre) && (Doc.Attributs.Tableau[nA].IndiceElement == nE3); nA++)
{
									TXmlAttribut& A = Doc.Attributs.Tableau[nA];
									if (strcmp(A.Nom,"nom") == 0) VinTrouve = A.Valeur;
									else if (strcmp(A.Nom,"prix_bouteille")==0)PrixVin = A.Valeur ;
}
								//je dois ajouter dans la "fiche" d'un vin son nom et son prix je
								//vais donc envoyer ses deux infos + le tableau des vins à la fonction d'ajout
								if ( (VinTrouve != NULL) && (PrixVin != NULL));
 
									if (TabVin_Ajouter(Tab,VinTrouve,atof(PrixVin)))
									{
										TVin& Vin = Tab.Tableau[TabVins_Rechercher(Tab,VinTrouve)];
							//j'appelle une fonction nommée TraiterVin et je lui passe 3 paramètres
										TraiterOenologue(Tab,Vin,Doc,VinTrouve);
									}
 
 
							}
						}
					}
				}
	}	}
et il ajoute donc un nouveau nom à la structure car TraiterOenologue(Tab,Vin,Doc,VinTrouve); appartient à un if qui contient ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
if (TabVin_Ajouter(Tab,VinTrouve,atof(PrixVin)))
									{
										TVin& Vin = Tab.Tableau[TabVins_Rechercher(Tab,VinTrouve)];
										//j'appelle une fonction nommée TraiterVin et je lui passe 3 paramètres
										TraiterOenologue(Tab,Vin,Doc,VinTrouve);
									}
Sauriez-vous me dire comment je dois faire ?

Je vous en remercie d'avance.

beegees