CopyDirectory
Publié : jeu. 04/août/2005 19:55
Salut à vous tous,
Besoin de vos yeux aguérris et de vos compétences pour résoudre un petit blème.
Pour archiver dossiers et fichiers :
Pour copier un dossier et son contenu j'ai un souci qui fait que si l'utilisateur veux Re-copier une seconde fois le dossier, se trouve dans l'impossibilité de le faire par dessus le précédent. le seul moyen semble de renommer le dossier de destination.
Le code des procédures que j'utilise (un peu épuré mais fonctionnel)
Une procédure qui est sensée vérifiée l'existence du dossier à copier dans le répertoire des archives et donc le signaler à l'utilisateur.
Puis la procédure de copie proprement dite qui inclue la précédente et doit logiquement renvoyé un MessageRequester si le dossier existe déjà.
Le problème est que même si le dossier existe déjà le message n'est pas renvoyé, et l'enregistrement avec le même nom ne peut se faire que dans un autre répertoire. Le SaveFileRequester ouvre alors le dossier existant du même nom que celui que l'on veut re-copier.
D'où ma perplexité, car j'ai l'impression de ne rien avoir oublié...ce qui n'est manifestement pas le cas.
Cependant, la copie se fait correctement si on change le nom du dossier à enregistrer...
Bah voilà, si vous voyois où je merdois, merci de me le faire voir
@+
Besoin de vos yeux aguérris et de vos compétences pour résoudre un petit blème.
Pour archiver dossiers et fichiers :
Pour copier un dossier et son contenu j'ai un souci qui fait que si l'utilisateur veux Re-copier une seconde fois le dossier, se trouve dans l'impossibilité de le faire par dessus le précédent. le seul moyen semble de renommer le dossier de destination.
Le code des procédures que j'utilise (un peu épuré mais fonctionnel)
Une procédure qui est sensée vérifiée l'existence du dossier à copier dans le répertoire des archives et donc le signaler à l'utilisateur.
Code : Tout sélectionner
Procedure ExistArchive(NomArchive$,MCdirectory$)
ExamineDirectory(#PB_Any,MCdirectory$,"*.*")
Repeat
FileType = NextDirectoryEntry()
If FileType
DossierArchive$ = DirectoryEntryName()
If FileType = 2 ; s'il s'agit d'un dossier
If NomArchive$ = DossierArchive$
ProcedureReturn 1
EndIf
EndIf
EndIf
Until FileType = 0
ProcedureReturn 0
EndProcedure
Code : Tout sélectionner
Procedure Archivage()
RepSource$ = "C:\DossierTest\"
RepDestination$ = SaveFileRequester("Modifiez le n° de l'archive puis Enregistrez la","C:\ARCHIVES\ARCHIVE_01","*.*",0)
CreerArchive = #True
If ExistArchive(RepDestination$,"C:\ARCHIVES\") = 1
If FileSize(RepDestination$)>0
Reponse = MessageRequester("Ce dossier existe déjà !","Voulez vous remplacer le dossier : " + RepDestination$ + " ? Il a déjà été enregistré !" ,#PB_MessageRequester_YesNo )
If Reponse = 6
a$ + "Yes"
Else
Reponse = 7
a$ + "No"
If Reponse <> 6
CreerArchive = #False
EndIf
EndIf
EndIf
EndIf
If CreerArchive
Resultat = CopyDirectory(RepSource$, RepDestination$,"*.*",#PB_FileSystem_Recursive)
If Resultat = 0
MessageRequester("ERREUR !", "IMPOSSIBLE DE COPIER LES FICHIERS !"+Chr(13)+""+Chr(13)+"LA SAUVEGARDE DE CE DOSSIER A ECHOUE !",#MB_ICONWARNING | #PB_MessageRequester_Ok )
Else
MessageRequester("TRANSFERT TERMINE !", "LES FICHIERS ET DOSSIERS ONT ETE CORRECTEMENT COPIES."+Chr(13)+""+Chr(13)+"L'ARCHIVAGE EST REUSSIE!",#MB_ICONINFORMATION | #PB_MessageRequester_Ok)
EndIf
EndIf
EndProcedure
D'où ma perplexité, car j'ai l'impression de ne rien avoir oublié...ce qui n'est manifestement pas le cas.

Cependant, la copie se fait correctement si on change le nom du dossier à enregistrer...

Bah voilà, si vous voyois où je merdois, merci de me le faire voir
@+