Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Discussion: sauvegarde fic hcopie

  1. #1
    Membre régulier
    Inscrit en
    novembre 2013
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : novembre 2013
    Messages : 170
    Points : 81
    Points
    81

    Par défaut sauvegarde fic hcopie

    Bonjour

    J'ai une proc de sauvegarde des fichiers mais certains fichiers lors du Hcopie créer une erreur fatal (Too many file open)

    J'ai essayé de gérer les erreurs mais cela ne marche pas comme je veux
    L'erreur est bien géré mais je voudrais qu'il continue a la sauvegarde suivante


    dans cas ERREUR et EXCEPTION comment le faire reprendre au fichier suivant

    Le goto suite ne marche pas

    ??? merci de votre aides


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    // Variables
    bResEcrit est un booléen = Vrai
    sFichier est une chaîne
    IDFichier est une entier
    // Récupère les fichiers décrits dans l'analyse et par programmation
    ListeFichier est une chaîne
    ListeFichier = HListeFichier
     
    // Sélection du nom et du chemin du fichier
    sLog_file est une chaîne = "c:\test\sauvegarde\log.txt"
     
     
     
    POUR TOUTE CHAÎNE fi DE ListeFichier SEPAREE PAR RC
    		sFichier = fi + ".fic"
     	 HCopieFichier("", "C:\test\sauvegarde\" + fi + ".fic", Guide, fi + ".fic") 
     
    suite:	
     
    FIN
     
     
     
    CAS ERREUR:
     
    SI fFichierExiste(sLog_file) = Faux ALORS
     
    	fCrée(sLog_file)
     
    FIN
     
    // Ouverture du fichier
    IDFichier = fOuvre(sLog_file, foLectureEcriture)
     
     
    // Affichage du message d'erreur si l'ouverture n'a pas été effectuée
    SI IDFichier = -1 ALORS
    	RETOUR
    SINON
     
    fEcritLigne(IDFichier,"Erreur Copie Fichier " + sFichier)
     
    FIN
     
    fFerme(IDFichier)
     
    goto suite
    CAS EXCEPTION:
     
    SI fFichierExiste(sLog_file) = Faux ALORS
     
    	fCrée(sLog_file)
     
    FIN
     
    // Ouverture du fichier
    IDFichier = fOuvre(sLog_file, foLectureEcriture)
     
     
    // Affichage du message d'erreur si l'ouverture n'a pas été effectuée
    SI IDFichier = -1 ALORS
    	RETOUR
    SINON
     
    	fEcritLigne(IDFichier,"Erreur Copie Fichier " + sFichier)
     
    FIN
     
    fFerme(IDFichier)
    goto suite

  2. #2
    Expert éminent
    Homme Profil pro
    Responsable Datas
    Inscrit en
    janvier 2009
    Messages
    3 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Datas

    Informations forums :
    Inscription : janvier 2009
    Messages : 3 515
    Points : 7 673
    Points
    7 673

    Par défaut

    Bonjour,
    Pour ma part, j'encadrerai le hCopieFichier d'un QUAND EXCEPTION DANS..., et je testerai le retour de hCopieFichier pour gérer les erreurs.
    Ainsi il n'y aurait plus besoin de cette ignominie de goto...
    Code WinDev : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    POUR TOUTE CHAÎNE fi DE ListeFichier SEPAREE PAR RC
    	QUAND EXCEPTION DANS
    		sFichier = fi + ".fic"
    	 	SI PAS HCopieFichier("", "C:\test\sauvegarde\" + fi + ".fic", Guide, fi + ".fic") alors
    			//... traitement de l'erreur...
    		FIN
    	FAIRE
    		//... traitement de l'exception...
    		ExceptionActive()
    	FIN 
    FIN

    Tatayo.

  3. #3
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    décembre 2013
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : décembre 2013
    Messages : 2 029
    Points : 4 253
    Points
    4 253

    Par défaut

    Tu as un premer problème dans les 2 procédures Erreur et Exception.

    Quand tu fais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SI fFichierExiste(sLog_file) = Faux ALORS
    	fCrée(sLog_file) 
    FIN 
    // Ouverture du fichier
    IDFichier = fOuvre(sLog_file, foLectureEcriture)
    Le programme ouvre une première fois le fichier, par l'instruction fCree(). Puis il ouvre une 2ème fois le fichier par l'instruction fOuvre().

    Remplace les 5 lignes ci-dessus par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IDFichier = fouvre( sLog_file, foCreationSiInexistant+foAjout+foEcriture)
    Mais je ne suis pas sûr que ça suffise.

    En fait, pour diagnostiquer un peu mieux ce qui se passe, tu peux garder ton code actuel, et juste ajouter une ligne dans les 2 procedures ERREUR et EXCEPTION.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SI fFichierExiste(sLog_file) = Faux ALORS
            trace ( " Passage ici")
    	fCrée(sLog_file) 
    FIN
    Si cette ligne s'affiche plein de fois, le diagnostic est bon, et la solution proposée va résoudre ton problème. Si cette ligne ne s'affiche qu'une fois, alors la modification proposée sera une amélioration... mais pas suffisante.


    Edit : Et sinon, 200% d'accord avec le message de Tatayo.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  4. #4
    Membre régulier
    Inscrit en
    novembre 2013
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : novembre 2013
    Messages : 170
    Points : 81
    Points
    81

    Par défaut

    hello

    Merci de votre aide

    La procédure marche Nickel grâce a vos conseille

    voici la proc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    PROCEDURE sauvegarde_base()
    // Variables
    bResEcrit est un booléen = Vrai
    sFichier est une chaîne
    IDFichier est une entier
    // Récupère les fichiers décrits dans l'analyse et par programmation
    ListeFichier est une chaîne
    ListeFichier = HListeFichier
    sLog_contenu est une chaîne
    sLigneAEcrire  est une chaîne = ""
     
     
    // Sélection du nom et du chemin du fichier
    sLog_file est une chaîne = "c:\test\sauvegarde\log.txt"
     
    //... traitement de l'exception...
    SI fFichierExiste(sLog_file) = Faux ALORS
     
    	IDFichier = fCrée(sLog_file)
    	fFerme(IDFichier)
     
    SINON
     
    	sLog_contenu = fChargeTexte(sLog_file)
    //	// Ouverture du fichier
    //	IDFichier = fOuvre(sLog_file, foLectureEcriture)
     
    FIN
     
     
     
    sLigneAEcrire += ChaîneConstruit("Debut de la sauvegarde  %1  à  %2 ",DateVersChaîne(DateSys(),"JJ/MM/AAAA") ,HeureVersChaîne(HeureSys(),"hh:mm:ss")) + RC
     
    POUR TOUTE CHAÎNE fi DE ListeFichier SEPAREE PAR RC
    		sFichier = fi + ".fic"
     
    	QUAND EXCEPTION DANS
     
    		sFichier = fi + ".fic"
    		SI PAS HCopieFichier("", "C:\test\sauvegarde\" + fi + ".fic", Guide, fi + ".fic") ALORS
    			sLigneAEcrire += ChaîneConstruit("Erreur de copie   %1  à  %2 du fichier %3 ",DateVersChaîne(DateSys(),"JJ/MM/AAAA") ,HeureVersChaîne(HeureSys(),"hh:mm:ss"),sFichier) + RC
     
    		FIN
     
    	FAIRE
     
    			sLigneAEcrire += ChaîneConstruit("Erreur de copie   %1  à  %2 du fichier %3 ",DateVersChaîne(DateSys(),"JJ/MM/AAAA") ,HeureVersChaîne(HeureSys(),"hh:mm:ss"),sFichier) + RC
    		ExceptionActive()
    	FIN 
     
     
     
     
    FIN
     
    sLigneAEcrire += ChaîneConstruit("Fin de la sauvegarde  %1  à  %2 ",DateVersChaîne(DateSys(),"JJ/MM/AAAA") ,HeureVersChaîne(HeureSys(),"hh:mm:ss")) + RC
     
    sLog_contenu += sLigneAEcrire
     
    fSauveTexte(sLog_file,sLog_contenu)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD15] Sauvegarder Restaurer les fichiers Fic
    Par papydev dans le forum WinDev
    Réponses: 3
    Dernier message: 19/06/2010, 11h37
  2. Sauvegardes
    Par tastalian dans le forum DirectX
    Réponses: 12
    Dernier message: 15/10/2002, 01h30
  3. [ADO] Sauvegarde / lecture de recordset
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 20/09/2002, 16h54
  4. Sauvegarder une surface dans un fichier
    Par Freakazoid dans le forum DirectX
    Réponses: 6
    Dernier message: 18/08/2002, 15h23
  5. [Kylix] Sauvegarde de donnée utilisateur....
    Par Eclypse dans le forum EDI
    Réponses: 1
    Dernier message: 11/05/2002, 17h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo