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 :

renommer un fichier


Sujet :

MFC

  1. #1
    Membre averti
    Inscrit en
    Novembre 2009
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 39
    Par défaut renommer un fichier
    Bonjour à tous,
    je travaille sous visual c++.
    j'essaye d'utiliser cette fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int rename(const char* ancienNom, const char* nouveauNom);
    qui renomme un fichier mais ça ne marche pas.
    elle ne me renvoie pas '0' çad qu'elle n'a pas reussu a renommer le fichier.
    est ce que qqu'un a une idée de ce que je dois faire?

    sinon est ce qqu'un sait comment on crée un repertoire? toujous en travaillant avec visual c++

    merci.

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Bonjour,
    Avec les MFC, tu peux renommer un fichier avec CFile::Rename qui est statique. Ensuite, il faut faire attention aux problèmes d'existence du fichier et des droits à le modifier.
    Pour créer un répertoire, je ne me souvient plus s'il existe quelque chose avec les MFC, mais avec Win32, tu peux utiliser CreateDirectory (ou CreateDirectoryEx) tout simplement.

  3. #3
    Membre averti
    Inscrit en
    Novembre 2009
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 39
    Par défaut
    J'ai essayé avec et j'ai ce message d'erreur a l'execution
    an unnamed file was not found
    Pourtant je suis sur que le fichier existe et que j'ai les droits qu'il faut.

  4. #4
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    As-tu mis un point d'arrêt pour voir quelles sont les valeurs effectives des paramètres à l'appel ? Peux-tu montrer le code qui entoure cet appel ?

  5. #5
    Membre averti
    Inscrit en
    Novembre 2009
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 39
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    void CCAODlg::OnRenommer() 
    {
    	// TODO: Add your control notification handler code here
    	int r;
    	CString ancien= "fad.doc";
    	CString nouveau = "blabla.bla";
    	//CFile::Rename(chemin + "\\" + ancien, chemin + "\\" + nouveau);
    	//r=rename( chemin + "\\" + ancien_2,chemin + "\\" + nouveau);
    	//CreateDirectory( chemin + "\\" + "FAD",NULL );
    	if(r==0)
    		MessageBox("ok");
    	else
    		MessageBox("pas ok");
     
     
    }
    la variable "chemin" contient le chemin de mon fichier et ca ne pose pas probleme avec d'autre fonctions comme "fopen"

    non je n'ai pas mis de point d'arret

  6. #6
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Ben, tu peux vérifier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    {
    	// TODO: Add your control notification handler code here
    	int r;
    	CString ancien= "fad.doc";
    	CString nouveau = "blabla.bla";
     
            CString message;
            message = "Créer le répertoire :'"+chemin + "\\" + "FAD"+"'";
            MessageBox(message);
     
            message = "Renomer le fichier :'"
                + chemin + "\\" + ancien + "'"
                + " en '"
                + chemin + "\\" + nouveau + "'"
           ;
            MessageBox(message);
    }
    Et voir si ce sont les bonnes chaînes.
    Si tout est OK, alors ce ne peut être qu'un problème de droit : soit le fichier est actuellement ouvert par une autre application, soit tu n'as pas les droits.

  7. #7
    Membre averti
    Inscrit en
    Novembre 2009
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 39
    Par défaut
    merci beaucoup, en fait c'est ça, c'est ma variable "chemin" qui ne contient pas ce que je pensait contenir.
    mais comment je fais? cette variable est initialisé dans une autre fonction, j'ai essayé de la faire passer en parametre dans ma fonction ca ne marche pas, et aussi de la declarer comme variable de la class DLG mais ca ne fonctionne pas non plus.

  8. #8
    Membre averti
    Inscrit en
    Novembre 2009
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 39
    Par défaut
    merci beaucoup j'ai reussi a trouver ou etait le probleme et comment le coriger.
    le probleme etait bien la variable "chemin" qui etait une variable public de ma class mais je ne l'utilisais pas correctemment, avec cette forme Cclass::chemin.
    je vous remercie beaucoup.

  9. #9
    Membre averti
    Inscrit en
    Novembre 2009
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 39
    Par défaut
    d'ailleurs ceci fonctionne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int rename(const char* ancienNom, const char* nouveauNom);

  10. #10
    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
    Citation Envoyé par fadoch Voir le message
    d'ailleurs ceci fonctionne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int rename(const char* ancienNom, const char* nouveauNom);
    salut, je préfère utiliser une version objet que C , dans le cas de CFile::Rename le code peut etre entouré d'une gestion d'erreur avec un try/catch.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    try
     {     
    CFile::Rename(pOldName, pNewName);
     }
     catch(CFileException* pEx )
     {     
    TRACE(_T("File %20s not found, cause = %d\n"), pOldName,pEx->m_cause); 
     pEx->Delete();
     }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Renommer un fichier a la date du jour
    Par mandrack dans le forum Linux
    Réponses: 3
    Dernier message: 15/12/2008, 10h18
  2. [LG]programme qui renomme des fichiers
    Par Ne0taku dans le forum Langage
    Réponses: 9
    Dernier message: 16/02/2005, 21h18
  3. renommer un fichier uploadé
    Par Sowa dans le forum ASP
    Réponses: 2
    Dernier message: 07/02/2005, 09h23
  4. Renommer un fichier avec SmartUpload
    Par PrinceMaster77 dans le forum ASP
    Réponses: 2
    Dernier message: 21/12/2004, 15h53
  5. [] [Réseau] Renommer des fichiers dans un site FTP
    Par JerBi dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 22/08/2003, 00h35

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