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

API, COM et SDKs Delphi Discussion :

Comment copier un répertoire et son contenu ?


Sujet :

API, COM et SDKs Delphi

  1. #1
    Membre régulier Avatar de yoghisan
    Profil pro
    Inscrit en
    Février 2004
    Messages
    172
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 172
    Points : 113
    Points
    113
    Par défaut Comment copier un répertoire et son contenu ?
    Bonjour,

    Pour effacer un repertoire et son contenu, j'utilise la fonction suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    uses ..., ShellApi;
     
    function EffaceDossier(Dossier: string): Boolean;
    var FileOpStruct: TShFileOpStruct;
    begin
      FileOpStruct.Wnd := 0;
      FileOpStruct.wFunc := FO_DELETE;
      FileOpStruct.pFrom := PChar(Dossier+#0+#0);
      FileOpStruct.pTo := nil;
      FileOpStruct.fFlags := FOF_NOCONFIRMATION or FOF_SILENT or FOF_ALLOWUNDO;
      FileOpStruct.lpszProgressTitle := nil;
      Result := ShFileOperation(FileOpStruct) = 0;
    end;
    et ça marche très bien

    pour contre, je veux copier maintenant un répertoire et tout son contenu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    uses ..., ShellApi;
     
    function CopieDossier(DossierSource,DossierDestination: string): Boolean;
    var FileOpStruct: TShFileOpStruct;
    begin
      FileOpStruct.Wnd := 0;
      FileOpStruct.wFunc := FO_COPY;
      FileOpStruct.pFrom := PChar(DossierSource+#0+#0);
      FileOpStruct.pTo := PChar(DossierDestination+#0+#0);
      FileOpStruct.fFlags := FOF_NOCONFIRMATION or FOF_SILENT;
      FileOpStruct.lpszProgressTitle := nil;
      Result := ShFileOperation(FileOpStruct) = 0;
    end;
    et ca ca ne marche pas, j'ai une solution qui marche déjà mais je voudrais l'optimiser en utilisant ça...

    Merci de votre intervention constructive

  2. #2
    C.M
    C.M est déconnecté
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 70
    Points : 58
    Points
    58
    Par défaut
    Le code ci-dessous devrait vous aider à copier un répertoire et son contenu ou seulement copier son contenu.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
      function CopyALL(Source, Destination: string): string;
      var Operation:_SHFILEOPSTRUCTA;
      begin
        with Operation do
        begin
          wFunc := FO_COPY;
          pFrom := PChar(Source);
          pTo := PChar(Destination);
          fFlags := FOF_SILENT;
        end;
        SHFileOperation(Operation);
      end;

  3. #3
    Membre régulier Avatar de yoghisan
    Profil pro
    Inscrit en
    Février 2004
    Messages
    172
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 172
    Points : 113
    Points
    113
    Par défaut
    chui désole mais ca ne marche pas...
    il y a une précaution particulière à prendre ?

  4. #4
    Membre régulier Avatar de yoghisan
    Profil pro
    Inscrit en
    Février 2004
    Messages
    172
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 172
    Points : 113
    Points
    113
    Par défaut
    Haaaaaaaaaaaaa, mon code marchait...
    seulement, il ne faut pas déclarer le dossier SANS un '\' à la fin...

  5. #5
    C.M
    C.M est déconnecté
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 70
    Points : 58
    Points
    58
    Par défaut
    il faut ajouter l'unit ShellAPI dans la clause uses, je crois.

  6. #6
    Membre régulier Avatar de yoghisan
    Profil pro
    Inscrit en
    Février 2004
    Messages
    172
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 172
    Points : 113
    Points
    113
    Par défaut
    J'ai mis ton code ca marche pas j'ai une idée mais pas sur...
    je crois qu'il faut mettre des +#0

    Merci...

  7. #7
    C.M
    C.M est déconnecté
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 70
    Points : 58
    Points
    58
    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
    17
    function TForm1.CopyALL(Source, Destination: string): string;
    var Operation:_SHFILEOPSTRUCTA;
    begin
      with Operation do
      begin
        wFunc := FO_COPY;
        pFrom := PChar(Source);
        pTo := PChar(Destination);
        fFlags := FOF_SILENT;
      end;
      SHFileOperation(Operation);
    end;
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      CopyALL(extractfilepath(application.ExeName)+'dossiersource',extractfilepath(application.ExeName)+'dossierdestination')
    end;

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

Discussions similaires

  1. Copier un répertoire et son contenu
    Par Rakken dans le forum Débuter
    Réponses: 4
    Dernier message: 29/04/2010, 13h24
  2. Déplacer un répertoire et son contenu
    Par choubiroute dans le forum Langage
    Réponses: 6
    Dernier message: 28/04/2006, 12h59
  3. [GTK#]Comment afficher une frame et son contenu?
    Par mick2d dans le forum GTK+
    Réponses: 3
    Dernier message: 31/03/2006, 09h35
  4. Réponses: 9
    Dernier message: 24/10/2005, 18h42

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