Matez ça! :)

cs_MaDC Messages postés 34 Date d'inscription samedi 25 mai 2002 Statut Membre Dernière intervention 25 août 2003 - 11 juin 2003 à 19:28
LucChirac Messages postés 8 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 23 mai 2007 - 16 juin 2003 à 10:11
J'ai un soucis avec mon appli MFC.
Je voudrais ouvrir un document avec ça :

void CCommandeRobotView::OnFileOpen() 
{
   CFileDialog fenetreDlg( true, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, "Fichiers Texte (*.txt)|*.txt|Trajectoires (*.trj)|*.trj|Tous les fichiers (*.*)|*.*||", NULL );
   fenetreDlg.DoModal();

   CString path = fenetreDlg.GetPathName();

   if (fenetreDlg.GetFileName() != "")
   {
      // un fichier a été choisi, path est son chemin complet
      CFile Fichier;
      if (!Fichier.Open(path, CFile::modeRead))
      {
         char message[1000];
         sprintf(message, "Impossible d'ouvrir le fichier : %s", path);
         MessageBox(message, "Erreur!", MB_OK | MB_ICONEXCLAMATION);
         Fichier.Close();
      }
      else
      {
            CArchive ar(&Fichier, CArchive::load);

            for (int i=0 ; i<400 ; i++)
            ar >> m_strTrajDoc[i] >> '\n';

            ar.Close();
            Fichier.Close();
      }
   }
}



La ligne ar >> m_strTrajDoc[i] >> '\n'; ne compile pas.
Je voudrais charger chaque ligne du tableau indépendement dans un tableau de CString, et pour se faire je lui dis qu'il trouvera un CString suivi d'un retour chariot mais il aime pas des masses le "\n"... comment je dois faire? :'(

4 réponses

trinitacs Messages postés 249 Date d'inscription mardi 16 juillet 2002 Statut Membre Dernière intervention 7 août 2003 2
12 juin 2003 à 09:24
-------------------------------
Réponse au message :
tu n'as pas déclaré ar :)

C'est quoi CFile ?

Vu que tu fais du C++ (en voyant ta classe) je te conseil d'utiliser l'objet ifstream pour lire un fichier:
http://www.cplusplus.com/ref/
-------------------------------

> J'ai un soucis avec mon appli MFC.
> Je voudrais ouvrir un document avec ça :
>
>
>
> void CCommandeRobotView::OnFileOpen() 
> {
>    CFileDialog fenetreDlg( true, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, "Fichiers Texte (*.txt)|*.txt|Trajectoires (*.trj)|*.trj|Tous les fichiers (*.*)|*.*||", NULL );
>    fenetreDlg.DoModal();
> 
>    CString path = fenetreDlg.GetPathName();
> 
>    if (fenetreDlg.GetFileName() != "")
>    {
>       // un fichier a été choisi, path est son chemin complet
>       CFile Fichier;
>       if (!Fichier.Open(path, CFile::modeRead))
>       {
>          char message[1000];
>          sprintf(message, "Impossible d'ouvrir le fichier : %s", path);
>          MessageBox(message, "Erreur!", MB_OK | MB_ICONEXCLAMATION);
>          Fichier.Close();
>       }
>       else
>       {
>             CArchive ar(&Fichier, CArchive::load);
> 
>             for (int i=0 ; i<400 ; i++)
>             ar >> m_strTrajDoc[i] >> '\n';
> 
>             ar.Close();
>             Fichier.Close();
>       }
>    }
> }
> 
> 

>
> La ligne ar >> m_strTrajDoc[i] >> '\n'; ne compile pas.
> Je voudrais charger chaque ligne du tableau indépendement dans un tableau de CString, et pour se faire je lui dis qu'il trouvera un CString suivi d'un retour chariot mais il aime pas des masses le "\n"... comment je dois faire? :'(
0
LucChirac Messages postés 8 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 23 mai 2007
12 juin 2003 à 10:43
Je comprends pas très bien.

logiquement ar >> m_strTrajDoc[i] ; , ça doit bien marcher
Mettre une variable dans un caractère (ici \n), il aime pas trop.
Il doit pouvoir se débrouiller comme un grand. Sinon, fait un ifstream
0
cs_MaDC Messages postés 34 Date d'inscription samedi 25 mai 2002 Statut Membre Dernière intervention 25 août 2003
12 juin 2003 à 13:19
bah c file c pour le c++ vu que c une classe.

ça fait koi ifstream??
0
LucChirac Messages postés 8 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 23 mai 2007
16 juin 2003 à 10:11
Exemple d'utilisation de ifstream

#include <fstream.h> // flux d'entrées/sorties fichiers

ifstream source("toto.txt"); // déclaration de la source

int tab[5];

for (int i=0 ; i<5 ; i++)
{
source >> tab[i]; // comme CArchive
printf("\t %d \t", tab[i]);
}

source.close();
0
Rejoignez-nous