Bon, ben un peu de code alors (il fonctionne, c'est pas un problème ):
J'ai deux structures et un vecteur:
Code :
- struct ContenuUneStatUnXML
- {
- AnsiString NomStat;
- vector<int> VecUneStatUnXML; //Contient chaque Frame
- };
- struct ContenuTtesStatUnXML
- {
- AnsiString PathXML;
- vector<ContenuUneStatUnXML> VecTtesStatUnXML;
- };
- vector<ContenuTtesStatUnXML> VecTtesStatsTsXML;
|
J'ai une fonction appellante MakeClip:
Code :
- vector<ContenuTtesStatUnXML> VecTtesStatsTsXML;
- VecTtesStatsTsXML.clear();
- ContenuUneStatUnXML CUSUX;
- ContenuTtesStatUnXML CTSUX;
- for (unsigned int i=0; i < VecSelectedIndex.size(); i++)
- {
- int IndexDsContenu = VecSelectedIndex[i];
- AnsiString PathXML = VecListeMatches[IndexDsContenu].PathFichierStats;
- CTSUX.PathXML = PathXML;
- if (!RemplirVecTSTX(VecTtesStatsTsXML,VecSelectedStats,CUSUX,CTSUX))
- return false;
- //ICI ON UTILISE LE VECTEUR ET LES DONNEES QU'IL CONTIENT
- }
|
Et une fonction appellée RemplirVecTSTX, qui va chercher des infos dans un fichier XML et qui remplit les vecteurs de structures:
Code :
- bool __fastcall TListeMatchesForm::RemplirVecTSTX(
- vector<ContenuTtesStatUnXML> & VecTtesStatsTsXML,
- vector<int> & VecSelectedStats,
- struct ContenuUneStatUnXML & CUSUX,
- struct ContenuTtesStatUnXML & CTSUX)
- {
- XMLStats->FileName = CTSUX.PathXML;
- XMLStats->Active = true;
- if (!XMLStats->Active)
- return false;
- _di_IXMLNode PtrContenu = XMLStats->DocumentElement;
- int NbreStatsChoisies = VecSelectedStats.size();
- for (int i=0; i < 2; i++)
- {
- _di_IXMLNode PtrEquipe = PtrContenu->ChildNodes->GetNode(i);
- AnsiString NomEquipe = PtrEquipe->GetAttribute("Equipe" );
- _di_IXMLNode PtrStaff = PtrEquipe->ChildNodes->GetNode(0);
- int NbreJoueurs = PtrStaff->ChildNodes->GetCount();
-
- CUSUX.VecUneStatUnXML.clear();
- for (int j=0; j < NbreJoueurs; j++)
- {
- _di_IXMLNode PtrJoueur = PtrStaff->ChildNodes->GetNode(j);
- AnsiString NomJoueur = AnsiString(PtrJoueur->GetAttribute("Nom" )).Delete(1,3);
- if (EquipeChoisie || (AnsiString(NomJoueur) == NomSelectionne))
- {
- CTSUX.VecTtesStatUnXML.clear();
- for (int k=0; k < NbreStatsChoisies; k++)
- {
- _di_IXMLNode PtrStatGlob = PtrJoueur->ChildNodes->GetNode(VecSelectedStats[k]);
- int NbreStats = PtrStatGlob->ChildNodes->GetCount();
-
- CUSUX.NomStat = pListeStats[VecSelectedStats[k]];
- for (int l=0; l < NbreStats; l++)
- {
- _di_IXMLNode PtrStat = PtrStatGlob->ChildNodes->GetNode(l);
- int FrameStat = PtrStat->GetNodeValue();
- CUSUX.VecUneStatUnXML.push_back(FrameStat);
- }
- CTSUX.VecTtesStatUnXML.push_back(CUSUX);
- }
- }
- }
- if (EquipeChoisie && (NomEquipe == NomSelectionne))
- break;
- }
- VecTtesStatsTsXML.push_back(CTSUX);
- return true;
- }
|
Bon alors ici je déclare le vecteur
Code :
- vector<ContenuTtesStatUnXML> VecTtesStatsTsXML;
|
et les structures
Code :
- ContenuUneStatUnXML CUSUX;
- ContenuTtesStatUnXML CTSUX;
|
dans la fonction appellante MakeClip et je les fais passer par référence à la fonction appellée RemplirVecTSTX, et je les utilise au retour de cette fonction...
C'est la solution 1...
La solution 2 consisterait à déclarer de la même manière mon vecteur et mes structures, mais dans RemplirVecTSTX, puis au retour de la fonction dans MakeClip, les redéclarer de la même manière pour les utiliser...
Et plus j'écris, plus je pense que c'est la solution 1 qui doit être utilisée... J'attends confirmation...
En espérant avoir été plus clair
Edit: typo
Message édité par haazheel le 25-05-2003 à 14:14:41
---------------
Another .Net Blog