j'ai un petit soucis:
j'ai un programme qui copie des fichiers et des répertoires depuis un CDROM vers mon disque dur.
Comme de bien entendu, après copie tous les répertoires et les fichiers sont en lecture seule, normal.
Après recopie sur mon disque dur, le programme doit modifier tous les attributs (des fichiers et des répertoires) de lecture seule vers normal.
Le code fonctionne parfaitement sur w98se, mais les répertoires refusent de passer en attribut normal sous xp.
Pour info, je suis bien en mode administrateur, donc j'ai les droits de faire cette manipulation, et le problème se pose aussi bien pour xp sp1 que sp2.
Voici le code que j'utilise: (récupéré sur le forum)
Code : Tout sélectionner
; 07/12/2004: mise au point de la procédure de modification d'attributs (répertoires et fichiers).
; Les fonctions de Windev échouent: si le rep ne contient aucun fichier, il n'est pas parcouru
; et son attribut ne peut être changé !
; Reste à trouver pourquoi cela ne fonctionne pas sous XP, pour les rep ! (l'attribut reste inchangé)
Procedure GetList(SourceDirectory$, Start)
If ExamineDirectory(Start, SourceDirectory$, "*.*")
SetFileAttributes_(SourceDirectory$, #FILE_ATTRIBUTE_NORMAL) ; Threaded search start
Repeat ; Repeat all the following
Type = NextDirectoryEntry() ; Set file or directory to start
If Type = 2
If DirectoryEntryName() <> "." And DirectoryEntryName() <> ".."
a$ = SourceDirectory$ + DirectoryEntryName()
Debug "Dir avant: " + a$
trer = SetFileAttributes_(a$, #FILE_ATTRIBUTE_NORMAL)
a$ + "\"
Debug "Dir après: " + a$ + " Résultat: " + Str(trer)
GetList(a$, Start + 1)
UseDirectory(Start)
EndIf
Else
If Type = 1
Place$ = SourceDirectory$ + DirectoryEntryName()
; Add the filename and directory
rest = SetFileAttributes_(Place$, #FILE_ATTRIBUTE_NORMAL)
Debug "File: " + Place$ + " Résultat: " + Str(rest)
EndIf
EndIf
Until Type = 0
EndIf
EndProcedure
b.s = PathRequester("Choisissez un répertoire et appuyez sur entrée", "")
If b <> ""
GetList(b, 0)
MessageRequester("Info", "")
EndIf
merci
Dominique