Ecriture dans un fichier

Résolu
goueg83460 Messages postés 57 Date d'inscription mercredi 23 novembre 2005 Statut Membre Dernière intervention 7 août 2009 - 2 mai 2006 à 10:14
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 - 2 mai 2006 à 10:41
bonjour je souhaite écrire dans un fichier plusieur informations préalablement lu dans une base de donnée ligne par ligne. Je met ces informations dans des variable et les met en entrées dans une fonction ecrire. Aussi j'ai fait une fonction ouvrir fichier en écriture et fermer fichier.Et rien ne s'écrit dans le fichier. Voici le code:

void C_Camping::Ecrire(AnsiString nom,AnsiString typ_veh,AnsiString empl,int ligne,int ligneMax)
{
   //ifstream ifile(fichier);
   //ofstream ofile(fichier, ios::ate);
   if(ligne == 0)
   {
      ofile.clear(0);
      ofile << "----------+---------------+-------------";
      ofile <<"\n";
      ofile << "|nom      |type vehicule  |emplacement |";
      ofile <<"\n";
      ofile << "----------+---------------+-------------";
      ofile << "|" << setw(9) << nom <<  "|" << setw(15) << typ_veh  << "|" << setw(12) << empl  ;
      ofile << "\n";
   }
   else
   {
      ofile << "|" << setw(9) << nom <<  "|" << setw(15) << typ_veh  << "|" << setw(12) << empl  ;
      ofile << "\n";
      ofile << "----------------------------------------";
      ofile << "\n";
   }
   //if(ligne == (ligneMax-1))
     // ofile.close();


}
//--------------------------------------------------------------------------
void C_Camping::OuvrirFicEcriture()
{
   ifstream ifile(fichier);
   ofstream ofile(fichier, ios::ate);
   ofile.clear(0);
}
//--------------------------------------------------------------------------
void C_Camping::FermerFic()
{
   ofile.close();
}

et voici le main   :

camp.OuvrirFicEcriture();
        for(i=0;i<nb2;i++)
        {
            bool lines = camp.bdd->Lireligne(i);
            AnsiString nom = camp.bdd->afficherNomChamps(0);
            AnsiString veh = camp.bdd->afficherNomChamps(1);
            AnsiString empl = camp.bdd->afficherNomChamps(2);
            StringGrid1->Cells[0][(i+1)] = nom;
            StringGrid1->ColWidths[0] = nom.Length() * 15;
            StringGrid1->Cells[1][(i+1)] = veh;
            StringGrid1->ColWidths[1] = veh.Length() * 15;
            StringGrid1->Cells[2][(i+1)] = empl;
            StringGrid1->ColWidths[2] = empl.Length() * 15;
            camp.Ecrire(nom.c_str(),empl.c_str(),veh.c_str(),i,nb2);
        }
        camp.FermerFic();
        camp.bdd->libererEspaceMemoire();

Merci pour votre aide

1 réponse

cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
2 mai 2006 à 10:41
Salut
Ta fonction OuvrirFicEcriture me semble incorrect : tu declare une variable ofile locale à la fonction. Tu as donc 2 variable ofile une en locale et une en globale en faisant ofstream ofile(fichier, ios::ate); tu ouvre la variable ofile locale et pas la globale. Essaye de faire un ofile.open(fichier, ios::ate); dans la fonction OuvrirFicEcriture

++
3
Rejoignez-nous