1 line
2.2 KiB
C++
1 line
2.2 KiB
C++
|
#include "LectBloc_T.h"
// lecture d'un bloc
void LectBloc::Lecture(UtilLecture & entreePrinc,LesReferences& lesRef,
char * motcle,string message)
{ MotCle motCle; // ref aux mots cle
if (strstr(entreePrinc.tablcar,motcle)!=NULL)
{ entreePrinc.NouvelleDonnee();
list <T> lili;
T elem;
// double t1; string s1;
while ( !motCle.SimotCle(entreePrinc.tablcar))
{ elem.Lecture(entreePrinc);
// *(entreePrinc.entree) >> elem.Nomref() >> t1;
// on regarde si cela correspond bien a une reference existante
if (!lesRef.Existe(elem.nomRef()))
{ cout << "\n erreur, la ref "<< elem.nomRef() << " de " << motcle << "ne correspond a aucun element"
<< " de la liste de reference lue !! \n";
elem.Affiche();
cout << " LectBloc::Lecture( etc ..."
<< endl;
entreePrinc.MessageBuffer(message);
exit (1);
}
// on verifie que l'on n'utilise pas deux fois la meme reference
// pour deux cibles differentes
list <T>::iterator ii;
for (ii=lili.begin() ; ii != lili.end(); ii++)
if (((*ii).nomRef() == elem.nomRef()) && ((*ii)::Valeur != elem::valeur))
{ cout << "\n erreur , un meme nom de reference est utilisee pour"
<< " deux cibles differentes \n"
<< " nom de la ref = " << elem.nomRef()
<< ", valeurs des deux cibles ="
<< (*ii)::Valeur <<", "<< elem::valeur ;
cout << " LectBloc::Lecture( etc etc .." << endl;
entreePrinc.MessageBuffer(message);
exit (1);
}
// stockage
lili.push_back(elem);
entreePrinc.NouvelleDonnee();
}
// enregistrement des infos
tabElem.Change_taille(lili.size());
list <T>::iterator i;
int j;
for (i=lili.begin(),j=1 ; i != lili.end(); i++,j++)
tabEpaiss(j) = *i;
}
};
|