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 :

Copier le contenu d'un répertoire


Sujet :

C++Builder

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2003
    Messages : 41
    Par défaut Copier le contenu d'un répertoire
    Bonjour...

    connaissez vous par hasard une fonction qui permet de copier un répertoire complet ansi que son contenu (sous-rep + fichier) vers un autre endroit ??? Du style CopyFile ou mais pour des répertoires.

    Si cela n'existe pas qqun aurai une soltion pour réaliser ceci...

    Merci et bonne Paques à vous (<- En retard je sais !!!)

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2003
    Messages : 171
    Par défaut
    Voici la fonction que j'utilise pour faire ceci car il n'existe aucune fonction deja prévu
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
     //-----------------------------------------------------------------------------------
      /*Permet de copier un répertoire qui n'est pas vide fonction recursive
    en C renvoit un bool pour savoir si cela c bien passé*/
    bool  __fastcall CopyFilesFromDir( LPSTR pszPath,LPSTR pszPathDir)
    {
            WIN32_FIND_DATA strcFindData;
            HANDLE          hFind;
            char            szSearchPath[MAX_PATH];
     
            strcpy( szSearchPath, pszPath );
            strcat( szSearchPath, "\\*" );
     
            hFind = FindFirstFile( szSearchPath, &strcFindData );
     
            if( hFind == INVALID_HANDLE_VALUE )
                return(FALSE);
     
            do {
                if( strcFindData.cFileName[0] == '.' &&
                  strcFindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY )
                    continue;
     
                if( strcFindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY ) {
                    char    szNewPath[MAX_PATH];
                    char    szNewPathDir[MAX_PATH];
     
                    strcpy( szNewPath, pszPath );
                    strcat( szNewPath, "\\" );
                    strcat( szNewPath, strcFindData.cFileName );
     
                    strcpy( szNewPathDir, pszPathDir );
                    strcat( szNewPathDir, "\\" );
                    strcat( szNewPathDir, strcFindData.cFileName );
                    mkdir (szNewPathDir);
     
                    if( ! CopyFilesFromDir( szNewPath,szNewPathDir ) ) {
                        return(FALSE);
                    }
                } else {
                    char    szFileName[MAX_PATH];
     
                    strcpy( szFileName, pszPath );
                    strcat( szFileName, "\\" );
                    strcat( szFileName, strcFindData.cFileName );
     
                    char    szFileNamesource[MAX_PATH];
                    strcpy( szFileNamesource, pszPathDir );
                    strcat( szFileNamesource, "\\" );
                    strcat( szFileNamesource, strcFindData.cFileName );
                    if( ! CopyFile( szFileName,szFileNamesource,FALSE ) ) {
                        return(FALSE);
                    }
                }
            } while( FindNextFile( hFind, &strcFindData ) );
     
            FindClose( hFind );
     
            return(TRUE);
    }

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2003
    Messages : 41
    Par défaut
    EXCELLENT !!! BRAVO !!!

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2003
    Messages : 171
    Par défaut
    merci et bonne continuation et vive l'entraide

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 242
    Par défaut
    Bonjour,
    je remercie tazamorte pour son script cependant j'ai essayé de l'utiliser mais sans succès


    je ne suis pas du tout certain si je dois l'appelé de cette façon. ( argument ?! )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    LPSTR asSource, asDest;
     asSource="C:\\Temp\\";
     asDest="C:\\Temp2\\";
     
    CopyFilesFromDir(asSource ,asDest);
    mais lorsque je souhaite lancer l'application, j'ai une erreur de Lieur
    [Lieur Erreur] Unresolved external 'TForm1::CopyFilesFromDir(char *, char *)' referenced from C:\SAUVEGARDE\UNITSAVE.OBJ
    Cela vient du type de mes arguments ? Je ne connais pas du tout le type LPSTR, j'avais essayé avec de l'AnsiString mais sans succès.

    Avez vous une idée ? Merci beaucoup pour votre aide.

  6. #6
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 92
    Par défaut
    Vu comment la fonction est écrite, je pense que tu n'as pas besoin de mettre le '\\' à la fin du nom de tes répertoires. Tu l'écris comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CopyFilesFromDir("C:\\Temp" ,"C:\\Temp2");
    Je ne pense pas que ça résolve l'erreur mais c'est toujours ça...

    Tu as mis ta fonction dans ta Form1, mais tu l'appelles à partir de quelle Form ?
    Par exemple si tu l'appelles de la Form2, tu dois mettre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Form1->CopyFilesFromDir("C:\\Temp" ,"C:\\Temp2");
    A voir...

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

Discussions similaires

  1. Lister le contenu d'un répertoire
    Par rob_57 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 09/10/2005, 19h16
  2. Lister le contenu d'un répertoire distant
    Par dody dans le forum Langage
    Réponses: 3
    Dernier message: 06/10/2005, 17h23
  3. copier le contenu d'une page web dans un fichier texte
    Par wassila dans le forum C++Builder
    Réponses: 30
    Dernier message: 28/08/2005, 22h27
  4. Copie du contenu d'un répertoire vers un autre
    Par IG88 dans le forum Windows
    Réponses: 4
    Dernier message: 30/07/2004, 14h33
  5. Réponses: 2
    Dernier message: 16/07/2004, 09h30

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