Page 1 sur 1

CopyDirectory()

Publié : mar. 08/nov./2005 11:20
par LavaLava
J'ai quelques soucis avec cette fonction ...
J'ai lut, qu'en début d'année, Denis en avez de similaires mais depuis pas de réponses ...
Apparament, même sans attribut de lecture seule, cette fonction ne permet pas de recopier un dossier ... Il suffit même que le dossier destination existe et soit vide pour que la fonction ne marche plus !

N'étant pas sur qu'il n'y est pas du window la dessous, je joint un test simple :

Code : Tout sélectionner

Src$ = "C:\SRC\"
Dst$ = "C:\DST\"
If FileSize(Src$) <> -2
  Debug "Creation dossier source = " + Str( CreateDirectory(Src$) )
EndIf
If FileSize(Src$+"Test.txt") = -1
  F = CreateFile(#PB_Any,Src$+"Test.txt")
  If F
    CloseFile(F)
    Debug "Creation du fichier de test"
  EndIf
EndIf
If FileSize(Dst$) = -2
  Debug "Efface le dossier destination = " + Str( DeleteDirectory(Dst$,"*.*",#PB_FileSystem_Force) )
EndIf
Debug "Premiere Copie = " + Str(CopyDirectory(Src$,Dst$,"*.*"))
Debug "Deuxieme copie = " + Str(CopyDirectory(Src$,Dst$,"*.*"))
Debug "Copie avec Sytem_Force = " + Str(CopyDirectory(Src$,Dst$,"*.*",#PB_FileSystem_Force))

Publié : mar. 08/nov./2005 15:51
par Jacobus
Essayes de cette manière, ça fonctionne parfaitement.
Note que j'ai retiré le "\" final du dossier de destination.

SRC$ = " C:\SRC\ "
Dst$ = " C:\DST "
Resultat = CopyDirectory (SRC$, Dst$,"", #PB_FileSystem_Recursive )
If Resultat = 0
   MessageRequester (" IMPOSSIBLE DE COPIER "," LA COPIE DU DOSSIER SOURCE A ECHOUE ! ", #MB_ICONWARNING | #PB_MessageRequester_Ok )
Else
   If Resultat = 1
     MessageRequester (" SAUVEGARDE "," LA COPIE DU DOSSIER SOURCE EST REUSSIE ! "+Chr(13)+""+Chr(13)+" La copie a été placée sur C:\ ", #MB_ICONINFORMATION | #PB_MessageRequester_Ok )
   Endif
Endif

Publié : mar. 08/nov./2005 18:08
par LavaLava
Merci Jacobus, cela va bien me dépanner ....
A noter que pour l'homogéinité du code on peut enlever le '\' de la source aussi.
Par contre il est dommage que GetPathPart() retourne le '\' final ...

Publié : mar. 08/nov./2005 19:33
par Jacobus
Par contre il est dommage que GetPathPart() retourne le '\' final
Ben non puisque en fait c'est bien le chemin que l'on veut en utilisant cette fonction. Si ensuite tu veux utiliser le dossier qui vient derrière tu sais que tu peux l'écrire ainsi : "Dossier\"

exemple :

Chemin$ = GetPathPart(FullPathName$)
Dossier$ = "Dossier\"
ou si c'est un fichier ==>> Fichier$ = "Fichier.extension"

donc Chemin$+Dossier$ = Emplacement du dossier
ou Chemin$+Fichier$ = Emplacement du fichier

Tu as de cette façon la possibilité d'utiliser l'un ou l'autre...si je me suis bien fait comprendre.

Publié : mer. 09/nov./2005 16:31
par LavaLava
Ma remarque sur le GetPathPart() est simplement venue du fait que dans mon prog j'utilise
CopyDirectory(GetPartPath(Source$),GetPartPath(Dest$),"*.*") car je pensais que le '\' final était obligatoire pour un dossier.

Comme aprés test de la plulpart des fonctions de gestions de fichier/dossier (CreateDirectory, DeleteDirectory, FileSize,...) acceptent la présence ou non du '\' final, j'ai a ce moment pensé que la syntaxe de pb était sans '\'.

Je trouve plus logique et lisible d'utiliser un '\' final, mais quelques soit le choix j'aimerais pouvoir utiliser un GetPathPart() en paramètre de CopyDirectory() !