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

C++Builder Discussion :

Probleme pour renommer un dossier


Sujet :

C++Builder

  1. #1
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut Probleme pour renommer un dossier
    Je cherche a renommer un dossier, je n'ai pas d'erreur de compilation, pas d'erreur d'execution, mais le dossier n'est pas remonne, et je ne vois pas mon erreur.
    le code:
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    void __fastcall TForm1::Renommerunrepertoire1Click(TObject *Sender)
    {
    // on recupere le nouveau nom du dossier
    AnsiString nvnom = InputBox("Input Box", "Nouveau Nom Du Fichier", "");
    // on traite l'ancien chemin pour creer le nouveau
            AnsiString chemin = DirectoryListBox2->Directory;
            nom_a_copier = ExtractFileName(chemin);
    int a = chemin.Length();
    int b = nom_a_copier.Length();
    int c = a - b;
    // ici on a le nouveau chemin
            AnsiString nvchemin = LeftStr(chemin, c);
            nvchemin = nvchemin + nvnom;
    //AnsiString OldName = chemin;
    //AnsiString NewName = nvchemin;
    //        RenameFile(chemin.c_str(), nvchemin.c_str());
    // on renomme le dossier
    RenameFile(chemin, nvchemin);
    if(RenameFile(chemin.c_str(), nvchemin) == true)
            {
    // si OK
    ShowMessage("répertoire renommé");
            }
    // on rafraichit le DirectoryListBox
            DirectoryListBox2->Update();
    }

  2. #2
    Membre éclairé
    Inscrit en
    Octobre 2002
    Messages
    343
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 343
    Par défaut
    Après avoir testé ton code, effectivement ça ne marche pas En fait, c'est à cause de ton composant DirectoryListBox2 qui vérouille le répertoire à renommé. Du coup, il n'est pas accessible en écriture. Lorsque tu écris le nom du répertoire manuellement, c'est à dire sans passer par ce composant, le répertoire est bien renommé.

    Du coup, je pense que tu devrais ajouté la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            AnsiString chemin = DirectoryListBox2->Directory ;
            DirectoryListBox2->Directory = "C:\\";
    dans ce cas, comme tu ne seras plus positionné sur le répertoire à renommé, ça passe bien

  3. #3
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    kurkaine a ecrit:
    Après avoir testé ton code, effectivement ça ne marche pas En fait, c'est à cause de ton composant DirectoryListBox2 qui vérouille le répertoire à renommé. Du coup, il n'est pas accessible en écriture. Lorsque tu écris le nom du répertoire manuellement, c'est à dire sans passer par ce composant, le répertoire est bien renommé.

    Du coup, je pense que tu devrais ajouté la ligne
    Code:
    AnsiString chemin = DirectoryListBox2->Directory ;
    DirectoryListBox2->Directory = "C:\\";dans ce cas, comme tu ne seras plus positionné sur le répertoire à renommé, ça passe bien
    Merci pour la reponse je vais tester.

  4. #4
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    J'ai teste et effectivement quand on libere le dossier on peut le renommer je poste le code modifié.
    le code:
    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
    19
    20
    21
    22
    23
    24
    25
    26
     
    void __fastcall TForm1::Renommerunrepertoire1Click(TObject *Sender)
    {
    // on recupere le nouveau nom du dossier
    AnsiString nvnom = InputBox("Input Box", "Nouveau Nom Du Fichier", "");
    // on traite l'ancien chemin pour creer le nouveau
            AnsiString chemin = DirectoryListBox2->Directory;
            nom_a_copier = ExtractFileName(chemin);
    int a = chemin.Length();
    int b = nom_a_copier.Length();
    int c = a - b;
    // ici on a le nouveau chemin
            AnsiString nvchemin = LeftStr(chemin, c);
            nvchemin = nvchemin + nvnom;
    //AnsiString OldName = chemin;
    //AnsiString NewName = nvchemin;
    // on libere le dossier a renommer sinon on ne peut pas le renommer
    DirectoryListBox2->Directory = "C:\\";
    // on renomme le dossier ici chemin et nvchemin contiennent le chemin
    // complet du dossier a renommer
    RenameFile(chemin, nvchemin);
    // on rafraichit le DirectoryListBox
            DirectoryListBox2->Update();
    // on affiche le dossier renomme
    DirectoryListBox2->Directory = nvchemin;
    }

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

Discussions similaires

  1. Probleme pour zipper un dossier
    Par vebvx dans le forum Développement Windows
    Réponses: 2
    Dernier message: 24/09/2015, 14h58
  2. Probleme pour creer a dossier commun sur reseau Samba
    Par donkeyquote dans le forum Réseau
    Réponses: 6
    Dernier message: 19/11/2008, 19h57
  3. probleme pour recuperer le chemin du dossier courant
    Par HoB dans le forum API standards et tierces
    Réponses: 8
    Dernier message: 11/08/2007, 11h22
  4. [VB.NET] Probleme renommer un dossier
    Par Aspic dans le forum Accès aux données
    Réponses: 3
    Dernier message: 20/11/2006, 21h32
  5. Probleme pour lister un dossier
    Par quentingsc dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 13/08/2006, 09h36

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