IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

Probleme avec CFile


Sujet :

MFC

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    28
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 28
    Par d�faut Probleme avec CFile
    Bonjour, je veux ouvrir un fichier en lecture, et j'ai vu qu'on pouvait le faire avec CFile, CStdioFile, et ifstream.
    Comme je suis avec VC et les MFC, je me suis dis qu'il serai mieux de se servir de CFile plutot que ifStream, mais la, probleme !

    Voila mon code :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    bool CBulletinDlg::SvgDonnees(CString sFichier)
    {   
        bool ok = false;
        //ouverture du fichier
        CFile myFile;
     
        if ( myFile.Open( sFichier, CFile::modeRead ))
        {
            ok = true;
        }
        return ok;
    }
    et voila l'erreur que le debuggeur me met :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    Error	1	error C2440: '=' : cannot convert from 'CString' to 'char *'
    Alors, que faire ?

  2. #2
    R�dacteur
    Avatar de farscape
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par d�faut
    salut,
    tu es sur que l'erreur rapport�e correspond au code montr� ?
    je ne vois pas d'affectation dans ton code .

  3. #3
    Membre �prouv� Avatar de GP77
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    111
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Par d�faut
    Essaie :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    if ( myFile.Open( &sFichier, CFile::modeRead ))
    La fonction demande un LPCTSTR...

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    28
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 28
    Par d�faut
    C'est au niveau de :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    if ( !myFile.Open( sFichier, CFile::modeRead ))
    la variable sFichier, il ne veut pas la convertir en char* et quand je le fait manuellement avant
    (char*)sFichier
    ,il me met la meme erreur, c'est null

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    28
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 28
    Par d�faut
    je viens de mettre la petite esperluette '&', et la, voila l'erreur :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    error C2664: 'CFile::Open' : cannot convert parameter 1 from 'CString *__w64 ' to 'LPCTSTR'

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    28
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 28
    Par d�faut
    J'ai trouv� la solution, il fallait que je convertisse mon CString en char* :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
     
        char* nom_fic = (char*)LPCTSTR(strFichier); 
        CFile myFile;
     
        if ( !myFile.Open( nom_fic, CFile::modeRead ))
            MessageBox("impossible d'ouvrir le fichier");
        else
            MessageBox("Ouverture ok");
    merci pour le coupe de main

  7. #7
    R�dacteur
    Avatar de farscape
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par d�faut
    ce n'est absolument pas normal ,Open accepte en argument un objet CString .
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    bool ok = false;
        //ouverture du fichier
        CFile myFile;
    	CString sFichier="toto";
        if ( myFile.Open( sFichier, CFile::modeRead ))
        {
            ok = true;
        }
    ce code compile sans probleme.
    tu dois etre en Unicode ....


  8. #8
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Non, on ne convertit pas en char *.
    En char const peut-�tre, mais le char * viole la s�curit� de la classe.

    D'ailleurs, CFile::Open() prend un LPCTSTR en param�tre, donc un TCHAR const *



    Si �a se trouve, ton erreur r�sidait uniquement dans le fait que tu aies fait quelque part un char* nom_fic = strFichier.

    Pour �viter ce genre de probl�mes, conseil n�1: Apprenez � bien utiliser const!
    et conseil n�2 : Utiliser les op�rateurs de conversion du C++! Si vous avez besoin d'un const_cast, c'est tr�s souvent parce que vous avez fait une erreur.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [MFC] probleme avec CFile
    Par benahpets dans le forum MFC
    R�ponses: 12
    Dernier message: 18/08/2005, 10h29
  2. Probleme avec la copie des surfaces
    Par Black_Daimond dans le forum DirectX
    R�ponses: 3
    Dernier message: 09/01/2003, 10h33
  3. probleme avec la touche F10
    Par b.grellee dans le forum Langage
    R�ponses: 2
    Dernier message: 15/09/2002, 22h04
  4. Probleme avec fseek
    Par Bjorn dans le forum C
    R�ponses: 5
    Dernier message: 04/08/2002, 07h17
  5. [Kylix] probleme avec un imagelist
    Par NicoLinux dans le forum EDI
    R�ponses: 4
    Dernier message: 08/06/2002, 23h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo