[RESOLU] Problème avec copyfile ()

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
anissa
Messages : 136
Inscription : mer. 13/oct./2010 15:43

[RESOLU] Problème avec copyfile ()

Message par anissa »

J'ai 2 répertoires Rep1$ et Rep2$. Rep1$ existe et il contient des fichiers. Ce sont ces fichiers que je veux copier dans Rep2$. (Si rep2$ n'existe pas je le crée : pas de problème jusqu'ici).
Le problème est le suivant (voici le code) :

Code : Tout sélectionner

If ExamineDirectory(0,Rep1$,"*.*")
   While NextDirectoryEntry()
          FileName$=DirectoryEntryName()
          CopyFile(FileName$,Rep2$+"\"+FileName$)
          Debug FileName$ ; (juste pour voir) 
   Wend
   FinishDirectory(0)
endif
End
Résultat: le répertoire Rep2$ est VIDE ! Rien n'a été copié ! Je sais que si je copie
le répertoire en entier ça marche mais je veux copier certains fichiers (un à un).

Merci
Anissa
Dernière modification par anissa le jeu. 09/déc./2010 12:23, modifié 3 fois.
boddhi
Messages : 604
Inscription : lun. 26/avr./2010 16:14
Localisation : S 48° 52' 31'' / O 123° 23' 33''

Re: Problème avec CopyFile ()

Message par boddhi »

Salut anissa...

Tout d'abord, avec quelle version de PB travailles-tu ??? Une version inférieure à 4.00 ?!!
Parce que sous 4.00+, ton code ne devrait pas se compiler et indiquer une erreur au niveau du jeu de commandes ExamineDirectory().
En effet, il manque le #Repertoire, obligatoire, dans les commandes NextDirectoryEntry() et DirectoryEntryName() !!!

Lorsque tu utiliseras PB4+, outre le #Repertoire, pour que ton processus de copie fonctionne correctement, tu devras renseigner le chemin dans l'argument SourceFileName de la commande CopyFile. Tu l'indiques bien pour l'argument DestinationFileName par Rep2$...
Tu aurais pu d'ailleurs t'en rendre compte avec ton debug FileName$, le chemin des fichiers n'apparaît pas dans la fenêtre de sortie !

Donc, à supposer que Rep1$ n'a pas pour caractère final '\', cela devrait donner (en PB4+) :

Code : Tout sélectionner

If ExamineDirectory(0,Rep1$,"*.*")
  While NextDirectoryEntry(0)
    FileName$=DirectoryEntryName(0)
    CopyFile(Rep1$+"\"+FileName$,Rep2$+"\"+FileName$)
    Debug FileName$ ; (juste pour voir)
  Wend
  FinishDirectory(0)
EndIf
End
Ensuite, pour sélectionner quel fichier tu veux copier, tu as deux solutions :
  • Soit tu joues sur le filtre/motif (*.*), par exemple si tu veux copier uniquementles fichiers txt, tu indiques '*.txt', comme ceci :

    Code : Tout sélectionner

    If ExamineDirectory(0,Rep1$,"*.txt")
    Soit, tu insères une boîte de requête (MessageRequester()) juste avant la commande CopyFile(), comme ceci :

    Code : Tout sélectionner

    Message.s="Voulez-vous copier le fichier '"+DirectoryEntryName()+"'"+Chr(10)+"vers le Dossier '"+Rep2$+"' ?"
    If MessageRequester("Copie",Message,#PB_MessageRequester_YesNo|#MB_ICONQUESTION)=#PB_MessageRequester_Yes
      CopyFile(Rep1$+"\"+FileName$,Rep2$+"\"+FileName$)
    EndIf
anissa
Messages : 136
Inscription : mer. 13/oct./2010 15:43

Re: Problème avec CopyFile ()

Message par anissa »

Bonjour Boddhi,

Tu crois vraiement qu'il est nécessaire de préciser le chemin complet? Le fait que mon debug affiche le fichier, je pensais alors que je pourrais le copier sans repréciser le chemin complet?? c'est donc ça? Ok je vais essayer demain. Merci de ton aide Boddhi !

Bisous
anissa
Messages : 136
Inscription : mer. 13/oct./2010 15:43

Re: Problème avec CopyFile ()

Message par anissa »

J'ai oublié de vous dire que j'utilise la version 4.2

Je voudrais profiter pour poser une autre question :
Peut on supprimer un fichier caché?

Code : Tout sélectionner

If Deletefile(fichier$) 
   Debug " Le fichier a été supprimé ! "
endif
end

J'ai essayé à mon niveau, ça n'a pas marché
Répondre