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 :
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 :
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 :
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
Partager