Bonjour tout le monde,
J'ai un problème que je n'arrive pas à réparer.
J'appelle cette fonction :
	
	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 :
et refaire ceci :
	
	| 12
 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 :
	
	| 12
 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 :
	
	
	| 12
 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
						
					
Partager