résultat de CopyDirectory

Sujets variés concernant le développement en PureBasic
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

résultat de CopyDirectory

Message par Anonyme2 »

Quels sont les raisons possibles pour que CopyDirectory retourne 0 ?
Fred
Site Admin
Messages : 2808
Inscription : mer. 21/janv./2004 11:03

Message par Fred »

Il suffit qu'un fichier ne puisse etre copié (droits, place etc..) pourqu'il retourne 0. Si il retourne 1, tout s'est bien passé.
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Je l'utilise sur un dossier et j'ai systématiquement 0 mais je ne vois pas pourquoi.

Les fichiers sont comparés par dates etc ?

Si tous les fichiers/dossiers sont identiques, ça retourne 0 ?
Fred
Site Admin
Messages : 2808
Inscription : mer. 21/janv./2004 11:03

Message par Fred »

En fait, j'accumule les resultats de CopyFile() donc si il y'en a un qui passe à 0, tout passe à 0. Le répertoire copié est absolument identique ?
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Fred a écrit :En fait, j'accumule les resultats de CopyFile() donc si il y'en a un qui passe à 0, tout passe à 0. Le répertoire copié est absolument identique ?
Je n'ai pas vérifié car il y a pas mal de dossiers et de fichiers, c'est une sauvegarde sur ma clée USB de mon dossier de projets PB
Avatar de l’utilisateur
Droopy
Messages : 1151
Inscription : lun. 19/juil./2004 22:31

Message par Droopy »

Vérifie que l'arborescence du répertoire dans lequel tu veux le copier existe
car cette fonction ne sait pas la recréer
Fred
Site Admin
Messages : 2808
Inscription : mer. 21/janv./2004 11:03

Message par Fred »

Tu es sur ?
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Droopy a écrit :Vérifie que l'arborescence du répertoire dans lequel tu veux le copier existe
car cette fonction ne sait pas la recréer
J'ai effacé le dossier de destination sur la clée USB et tous les sous-dossiers et fichiers, et j'utilise le code suivant

Code : Tout sélectionner

   RepSource$ = "C:\Program Files\PureBasic\Libs\MemoryDll" 
   RepDestination$ = "L:\PureBasic\Libs\MemoryDll" 
   Resultat = CopyDirectory(RepSource$, RepDestination$,"*.*",#PB_FileSystem_Recursive) 
Debug Resultat 
J'ai lancé ce code et tout se passe bien, retour 1 et le sous-dossiers de mon dossier principal est bien créé sur la clée USB et l'ensemble des fichiers est présent.

J'ai relancé une nouvelle fois ce code sans rien modifier et le retour se fait avec la valeur 0
:roll:
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Message par Jacobus »

J'avais eu le même problème au mois de décembre
Un coup cela fonctionnait très bien et ensuite blème.
http://purebasic.hmt-forum.com/viewtopic.php?t=1966

J'avais alors réalisé qu'il fallait nécessairement indiquer l'emplacement des répertoires, précisément. Mais visiblement ça ne suffit pas. Il faut que je teste à nouveau car si malgré les répertoires précisés ça marche un coup sur deux, ça va râler dans les chaumières...

Denis, as-tu essayé d'utiliser cette fonction en donnant le choix à l'utilisateur des reps source et destination ?
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Jacobus a écrit : Denis, as-tu essayé d'utiliser cette fonction en donnant le choix à l'utilisateur des reps source et destination ?
Non, car le code que j'utilsie c'est les 3 lignes, ni plus ni moins.

Je viens de trouver pourquoi en lisant ton message :idea: . Une partie des fichiers a l'attribut "lecture seule". J'ai sélectionné sur ma clée USB (la destination) tous les fichiers et j'ai supprimé cet attribut. J'ai relancé le code et c'est OK puis nouvel essai et de nouveau 0 car les fichiers d'origine ayant cet attribut l'ont conservé sur la clée.

Fred, peut-être qu'un flag #PB_ForceWrintingFile pour forcer l'écriture de ces fichiers en lecture seule serait bien.
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Message par Jacobus »

:) ok, il faudrait donc que les fichiers copiés soient en même temps transformés en mode Normal. Peut-être qu'en forçant ce changement dans la procédure, lors de la copie, ça arrangerait le travail.
Dobro a fait un excellent tuto sur le changement d'attribut de fichier, en utilisant l'API. Cela devrait pouvoir dépanner.

Demo de Dobro : (voir Forum Débutants)

Code : Tout sélectionner

buffer.s = Space(#MAX_PATH) ; reserve un buffer 
buffer.s ="D:\Bidon\test.txt" ; inscrit le chemin du fichier "test.txt" 
;si le fichier était en lecture seule, on le modifie.
SetFileAttributes_(@buffer.s,#FILE_ATTRIBUTE_NORMAL ) 
Reste à intégrer ça dans la procédure de CopyDirectory.
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
Avatar de l’utilisateur
Droopy
Messages : 1151
Inscription : lun. 19/juil./2004 22:31

Message par Droopy »

désolé pour le post précédent
j'ai confondu avec la fonction openfile()
qui elle ne sait pas créer le répertoire s'il n'existe pas
Fred
Site Admin
Messages : 2808
Inscription : mer. 21/janv./2004 11:03

Message par Fred »

Denis, j'ai ajouté le support du flag #PB_FileSystem_Force pour CopyDirectory(), dis moi si ca marche (avec et sans): www.purebasic.com/denis/FileSystem
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Fred a écrit :Denis, j'ai ajouté le support du flag #PB_FileSystem_Force pour CopyDirectory(), dis moi si ca marche (avec et sans): www.purebasic.com/denis/FileSystem
Non ca ne va toujours pas
retourne 0 avec ou sans le flag;

J'ai modifié un fichier en lecture seule pour qu'il ait la date d'aujourd'hui et j'ai lancé le code avec et sans le flag. Sur la clée, le fichier n'est pas copié., retour 0 dans les 2 cas.

J'ai retiré l'attribut lecture seule sur le fichier de la clée et j'ai lancé le code avec le flag, retour 0 mais cete fois le fichier est copié.

voilà comment j'ai mis le flag, j'utilise PB 3.93 beta 3

Code : Tout sélectionner

   RepSource$ = "C:\Program Files\PureBasic\Libs\MemoryDll" 
   RepDestination$ = "M:\PureBasic\Libs\MemoryDll" 
   Resultat = CopyDirectory(RepSource$, RepDestination$,"*.*",#PB_FileSystem_Recursive|#PB_FileSystem_Force) 
Debug Resultat [quote][/quote]
Fred
Site Admin
Messages : 2808
Inscription : mer. 21/janv./2004 11:03

Message par Fred »

Ok, je vois. J'ai remis une nouvelle version en ligne, tu peux me dire ?
Répondre