Sauvegarde...marche pas comme je veux. Arrrhh !

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Sauvegarde...marche pas comme je veux. Arrrhh !

Message par Jacobus »

:) Salut à vous tous,

Voilà mon souci, j'ai fait une procedure de sauvegarde d'un dossier contenant des sous dossiers et des fichiers.
Pas vraiment sorcier, de plus elle fonctionne, mais pas comme j'ai envie.

le code :

Code : Tout sélectionner

Procedure createdos_sauvegarde()

  CreateDos = CreateDirectory("\Sauvegarde")   
   RepertoireSource$ = "C:\Program Files\PMC Utilitaire\Fichiers PMC"
    RepertoireDestination$ = "\Sauvegarde"
      Resultat = CopyDirectory(RepertoireSource$, RepertoireDestination$,"",#PB_FileSystem_Recursive)

 If FileSize(RepertoireDestination$)>0 ;si le dossier existe...
   If Resultat = 0
     MessageRequester("IMPOSSIBLE DE COPIER","LA SAUVEGARDE DES FICHIERS PMC A ECHOUE !",#MB_ICONERROR | #PB_MessageRequester_Ok )
      Else     
       If Resultat = 1
        MessageRequester("Création d'une sauvegarde","LA SAUVEGARDE DES FICHIERS PMC A REUSSI !",#MB_ICONINFORMATION | #PB_MessageRequester_Ok )
         EndIf 
          EndIf 

 If CreateDos = 1;si le dossier n'existe pas, on le créé
   If Resultat = 0
     MessageRequester("IMPOSSIBLE DE COPIER","LA SAUVEGARDE DES FICHIERS PMC A ECHOUE !",#MB_ICONERROR | #PB_MessageRequester_Ok )
      Else     
       If Resultat = 1
        MessageRequester("Création d'une sauvegarde","LA SAUVEGARDE DES FICHIERS PMC A REUSSI !",#MB_ICONINFORMATION | #PB_MessageRequester_Ok )
        EndIf 
         EndIf 

 If CreateDos = 0; si on ne parvient à créer ni dossier,ni sous dossier, ni fichier ...
     MessageRequester("PROBLEME", "IMPOSSIBLE DE CREER LE DOSSIER",#MB_ICONERROR | #PB_MessageRequester_Ok)   
   EndIf   
  EndIf 
 EndIf
EndProcedure
Le dossier de sauvegarde est bel et bien créé, contient tous les dossiers et fichiers, mais aucun requester n'apparaît à aucun moment. De plus je pensais pouvoir lui donner une direction mais nan! rien, y veut pas. Il me le crée sur C:\ quoi que je fasse.
Donc j'ai dû mettre quelque chose dans le désordre ou carrément pas mis, donc si une âme charitable passe par là pour me donner un coup de pouce ... ben :D ce sera sympa.

Merci @+ jacobus
Good07
Messages : 308
Inscription : ven. 23/avr./2004 18:08
Localisation : Hérault 34190 Laroque

Message par Good07 »

Bonsoir.

J'ai pas tous vérifié, mais il est normal que ton dossier soit créé à la racine du disque c, puisque tu marques RepertoireDestination$="\Sauvegarde". Si tu ne lui donne pas de chemin il est obligatoirement créé à la racine du disque que tu utilises.
Met par exemple :

Code : Tout sélectionner

RepertoireDestination$="D:\Sauvegarde"
et la sauvegarde se fera sur le disque D

Bonne continuation. :D
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Message par Jacobus »

:) Salut, merci à toi,

C'est vrai que c'est logique, mais je pensais qu'en ne mettant pas de direction initiale, le choix aurait été proposé. M'enfin cela reste secondaire puisque le dossier étant déjà créé, il suffit de le copier où on veut.

Le problème sont les requesters qui ne s'affichent pas.
Quand c'est réussi ou quand c'est raté.
Je pense que j'ai mis des conditions en trop, et je vais revoir ça dans ce sens. Dès que ça marche je remet le code ici pour le cas ou cela intéresserait quelqu'un.

Merci encore, Jacobus

________________________
Bon ben voilà le bon code :
Finalement il y avait bien des conditions en trop, empêchant les requesters.
Donc ici la sauvegarde se fait sur C:\ par défaut car comme l'a dit Good07 c'est automatiquement copié à la racine du disque quand le chemin n'est pas donné.

Code : Tout sélectionner

Procedure createdos_sauvegarde()

  CreateDos = CreateDirectory("\Sauvegarde")   
   RepertoireSource$ = "C:\Program Files\PMC Utilitaire\Fichiers PMC"
    RepertoireDestination$ = "\Sauvegarde"
      Resultat = CopyDirectory(RepertoireSource$, RepertoireDestination$,"",#PB_FileSystem_Recursive)

 If FileSize(RepertoireDestination$)>0 ;si le dossier existe...
    Resultat = 1 : MessageRequester("Création d'une sauvegarde","LA SAUVEGARDE DES FICHIERS PMC A REUSSI !",#MB_ICONINFORMATION | #PB_MessageRequester_Ok )
   If Resultat = 0
     MessageRequester("IMPOSSIBLE DE COPIER","LA SAUVEGARDE DES FICHIERS PMC A ECHOUE !",#MB_ICONERROR | #PB_MessageRequester_Ok )
        EndIf 
         EndIf 

 If CreateDos = 1;si le dossier n'existe pas, on le créé
     Resultat = 1 : MessageRequester("Création d'une sauvegarde","LA SAUVEGARDE DES FICHIERS PMC A REUSSI !",#MB_ICONINFORMATION | #PB_MessageRequester_Ok )
   If Resultat = 0
     MessageRequester("IMPOSSIBLE DE COPIER","LA SAUVEGARDE DES FICHIERS PMC A ECHOUE !",#MB_ICONERROR | #PB_MessageRequester_Ok )
        EndIf 
         EndIf 

 If CreateDos = 0; si on ne parvient à créer ni dossier,ni sous dossier, ni fichier ...
     MessageRequester("PROBLEME", "IMPOSSIBLE DE CREER LE DOSSIER",#MB_ICONERROR | #PB_MessageRequester_Ok)   
 EndIf
EndProcedure
Voilà, ça me sert, alors si ça peut servir à d'autres... :D

@+ Jacobus
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

Code : Tout sélectionner

If FileSize(RepertoireDestination$)>0 ;si le dossier existe...
filesize retourne -2 quand un dossier existe et pas une valeur supérieur à 0. je pense que ton erreur vient de la, j'ai pas fait d'essai pour confirmer
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Le Soldat Inconnu a écrit :

Code : Tout sélectionner

If FileSize(RepertoireDestination$)>0 ;si le dossier existe...
filesize retourne -2 quand un dossier existe et pas une valeur supérieur à 0. je pense que ton erreur vient de la, j'ai pas fait d'essai pour confirmer
FileSize() peut aussi bien retourner 0 qu'une valeur plus importante

-1 : le fichier n'existe pas
-2 : c'est un dossier
0 : le fichier existe, il fait 0 octets
>0 : retourne la taille du fichier.

Par contre, pour un repertoire, c'est -2, et pas autre chose.
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Message par Jacobus »

:) Salut,

Visiblement j'avais commis la bourde de confondre Fichier et Dossier
et ce qui m'étonne c'est que cela fonctionnait quand même.

Bref j'ai refait ce bout de code avec vos indications et pour le rendre plus simple encore, j'ai fait deux petites procédures;
Une pour créer le dossier et une pour y copier la sauvegarde.
y a pas, ça fonctionne beaucoup mieux.
Il suffit ensuite de les lancer à suivre.

Nouveau code, plus fonctionnel :

Code : Tout sélectionner

Procedure createdos()
  CreateDos = CreateDirectory("\Sauvegarde")
 If CreateDos = 1;si le dossier n'existe pas, on le créé
     MessageRequester("Création du répertoire de sauvegarde","LE REPERTOIRE DE SAUVEGARDE A ETE CREE !",#MB_ICONINFORMATION | #PB_MessageRequester_Ok )

 If CreateDos = 0; si on ne parvient à créer ni dossier,ni sous dossier, ni fichier ...
     MessageRequester("PROBLEME", "IMPOSSIBLE DE CREER LE DOSSIER",#MB_ICONERROR | #PB_MessageRequester_Ok)   
  EndIf
 EndIf 
EndProcedure

Procedure sauvegarde() 
   RepertoireSource$ = "C:\Program Files\PMC Utilitaire\Fichiers PMC"
    RepertoireDestination$ = "\Sauvegarde"
      Resultat = CopyDirectory(RepertoireSource$, RepertoireDestination$,"",#PB_FileSystem_Recursive)

 If FileSize(RepertoireDestination$) = -2 ;si le dossier existe...
    Resultat = 1 : MessageRequester("Création d'une sauvegarde","LA SAUVEGARDE DES FICHIERS PMC A REUSSI !",#MB_ICONINFORMATION | #PB_MessageRequester_Ok )
 
 If Resultat = 0
     MessageRequester("IMPOSSIBLE DE COPIER","LA SAUVEGARDE DES FICHIERS PMC A ECHOUE !",#MB_ICONERROR | #PB_MessageRequester_Ok )
   EndIf 
  EndIf 
EndProcedure

;dans la boucle du Repeat 
;Le bouton correspondant à la sauvegarde dans le menu :

Case 61 : createdos() : sauvegarde()
Voilà ainsi votre répertoire et ses sous répertoires et ses fichiers copiés sur C:\ et les requesters sont là dans l'ordre où on les attend.

Merci encore,
@+ Jacobus :D
Répondre