IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

C++Builder Discussion :

[TMemo] Sauvegarde périodique du contenu vers un fichier


Sujet :

C++Builder

  1. #1
    Membre confirmé Avatar de nemo69500
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 639
    Points : 519
    Points
    519
    Par défaut [TMemo] Sauvegarde périodique du contenu vers un fichier
    Bonjour

    je fais une sauvegarde d'un memo toute les 10 secondes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    try{
    Memo1->Lines->SaveToFile("b.txt");
    }
    catch(...){
    }
    le probleme est qu'a un certain moment il va arreter de sauvegarder , a mon avis par il toruve une exception mais c est normal , seulement la fois d'apres il n'y arrive plus et me refais une exception a chaque fois.

    ps: pour voir qu il me faisait une exception je mettais un showmessage dans le catch

    pouvez vous m aider svp??

    merci d'avance
    *************##--##***************
    www.ptichoupi.fr



    Pensez au
    De tmps en tps du repos, ca fais du bien!

    ************//////\\\\\\**************

  2. #2
    Membre actif
    Avatar de lanonyme
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    229
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 229
    Points : 290
    Points
    290
    Par défaut
    Bonjour,

    S'il trouve une exception et que tu la corrige pas, c'est normal aussi qu'il la retrouve ensuite.

    Peut donner l'exception qui est généré ?

    lanonyme

  3. #3
    Membre confirmé Avatar de nemo69500
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 639
    Points : 519
    Points
    519
    Par défaut
    avant quand je ne mettais pas try et catch , il me disait au bout d 'un certain temps , "impossible de créer b.txt" et ca se repetais
    *************##--##***************
    www.ptichoupi.fr



    Pensez au
    De tmps en tps du repos, ca fais du bien!

    ************//////\\\\\\**************

  4. #4
    Membre actif
    Avatar de lanonyme
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    229
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 229
    Points : 290
    Points
    290
    Par défaut
    Bonjour,
    Je viens d'essayer chez moi un petit test
    Sauvegarde toute les 200ms, en remplissant mon memo, j'ai un creer un fichier de + d'un 1Mo sans soucis.

    As tu verifier que tu ne l'ouvrai pas ailleurs dans ton programme ?

    Sinon, je ne vois pas d'ou peut venir le probleme

    lanonyme

  5. #5
    Membre confirmé Avatar de nemo69500
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 639
    Points : 519
    Points
    519
    Par défaut
    non je ne l'ouvre pas , j'ecris et le sauvegarde toute les dix seconde, je vois pas ce qui bloque
    le pire c est que ca fonctionne au moin plus de 5heure d'affiler environ puis apres une fois que ca bloque , impossible de resaugarder , mais c est normal etant donner que je corrige pas l'erreur comme tu me la dis

    mais je vois pas d ou viens cette erreur et pour la corriger ...
    *************##--##***************
    www.ptichoupi.fr



    Pensez au
    De tmps en tps du repos, ca fais du bien!

    ************//////\\\\\\**************

  6. #6
    Membre éprouvé
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Points : 1 007
    Points
    1 007
    Par défaut
    J'ai eu aussi ce genre de problème !
    Je l'ai résolu en ne sauvegardant qu'au bon moment ! Le soucis vient du fait que ton fichier texte devient de plus en plus long, donc de plus en plus long à sauvegarder ! Il arrive un moment où il se marche sur les pieds, c'est à dire que tu lance ta sauvegarde par ton SaveToFile, et passe à la ligne suivante, mais cela ne veut pas dire que la sauvegarde est terminée.

    Du coup, à l'interruption suivante, il retente de la sauvegarder mais le fichier est déjà pris par la sauvegarde précédente en cours, d'où la prise de possession du fichier et le "impossible de créer b.txt". De ce fait tu comprend bien qu'il retrouve cette même erreur à chaque fois.

    Je pense même que si tu mets un point d'arrêt et que tu déroules ton programme pas à pas assez lentement pour qu'il ait le temps de sauvegarder, tu ne verras plus l'erreur.

    Il faudrait soit que tu sauvegardes moins souvent (ce qui retardera le problème) soit que tu changes de fichier au bout d'un certains temps.

  7. #7
    Membre confirmé Avatar de nemo69500
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 639
    Points : 519
    Points
    519
    Par défaut
    Oki merci je vais essaiyer comme ca , on vera bien ,

    Y a t il un moyen de detecter la fin de la sauvegarde??
    *************##--##***************
    www.ptichoupi.fr



    Pensez au
    De tmps en tps du repos, ca fais du bien!

    ************//////\\\\\\**************

  8. #8
    Membre actif
    Avatar de lanonyme
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    229
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 229
    Points : 290
    Points
    290
    Par défaut
    Bonjour,

    Pour le probleme d'attente, si tu utilise un timer tu n'a qu'a 'switcher' la propriete Enabled :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Timer1->Enabled = false ;
    Memo1->Lines->SaveToFile("b.txt");
    Timer1->Enabled = true ;
    je crois que la fonction SaveToFile renvoie un booleen ...


    Edit : Effectivement avec + de 12Mo de texte, il m'est a certain temps a sauvegarder

    lanonyme

  9. #9
    Membre éprouvé
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Points : 1 007
    Points
    1 007
    Par défaut
    Je ne garantit rien, mais si tu teste avec la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if(FileExists("b.txt") == false)
    {
    ...
    }
    est qu'il est en cours d'exécution, il se peut qu'il te dise (de la même manière) que le fichier n'existe pas, s'il est en cours de sauvegarde. Mais attention, je n'en suis pas sûr. A tester ...
    Tiens nous au courant

  10. #10
    Membre confirmé Avatar de nemo69500
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 639
    Points : 519
    Points
    519
    Par défaut
    j ai essayer tout les truc que vous me proposer , cela ne fonctionne pas mais le plus intrigant pour moi c est celui la:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Timer20->Enabled=false;
    if(Memo3->Lines->SaveToFile("b.txt"))
    {
    Timer20->Enabled=true;
    }
    il me dis impossible de convertir void en bool
    pourquoi??
    *************##--##***************
    www.ptichoupi.fr



    Pensez au
    De tmps en tps du repos, ca fais du bien!

    ************//////\\\\\\**************

  11. #11
    Membre expérimenté
    Avatar de bakaneko
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 268
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 268
    Points : 1 427
    Points
    1 427
    Par défaut
    Citation Envoyé par nemo69500
    j ai essayer tout les truc que vous me proposer , cela ne fonctionne pas mais le plus intrigant pour moi c est celui la:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Timer20->Enabled=false;
    if(Memo3->Lines->SaveToFile("b.txt"))
    {
    Timer20->Enabled=true;
    }
    il me dis impossible de convertir void en bool
    pourquoi??
    Voila pourquoi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    virtual void __fastcall SaveToFile(const AnsiString FileName);
    Vive l'aide
    + + +

  12. #12
    Membre confirmé Avatar de nemo69500
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 639
    Points : 519
    Points
    519
    Par défaut
    tu peu me dire comment tester si ma sauvegarde a fini stp?
    *************##--##***************
    www.ptichoupi.fr



    Pensez au
    De tmps en tps du repos, ca fais du bien!

    ************//////\\\\\\**************

  13. #13
    Membre expérimenté
    Avatar de bakaneko
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 268
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 268
    Points : 1 427
    Points
    1 427
    Par défaut
    Je ne sais pas si tu pourras faire ça en continuant à utiliser la méthode SaveToFile.

    Par contre, tu peux faire ta sauvegarde avec les routines de gestion de fichiers (du type FileOpen, FileSeek, FileWrite, etc.) et là, je pense que tu obtiendras ce que tu désires.

    Nb:Je ne suis pas un spécialiste des sauvegardes régulières de fichiers, ce n'est donc qu'une proposition parmis d'autres.
    + + +

  14. #14
    Membre confirmé Avatar de nemo69500
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 639
    Points : 519
    Points
    519
    Par défaut
    oki merci , je vois ca et je vous tiens au courant

    je met pas tout de suite le resolu
    *************##--##***************
    www.ptichoupi.fr



    Pensez au
    De tmps en tps du repos, ca fais du bien!

    ************//////\\\\\\**************

  15. #15
    Membre éprouvé
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Points : 1 007
    Points
    1 007
    Par défaut
    Tu peux essayer de récupérer ton fichier avec les CreateFile et WriteFile,
    jette un oeil sur msdn en attendant que l'on trouve un code qui pourrait t'aider.

  16. #16
    Membre confirmé Avatar de nemo69500
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 639
    Points : 519
    Points
    519
    Par défaut
    finalement j ai fais comme ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    try{
    Timer20->Enabled=false;
    Memo3->Lines->SaveToFile("b.php");
    Timer20->Enabled=true;
    }
    catch(...){
    Timer20->Enabled=true;
    }
    et je viens d essayer toute la nuit et ca fonctionne , ca m'a fais une exeption mais ca arrive a reprendre maintenant donc ca me suffit meme si je sais que c est pas trop bien gerer
    *************##--##***************
    www.ptichoupi.fr



    Pensez au
    De tmps en tps du repos, ca fais du bien!

    ************//////\\\\\\**************

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/09/2007, 21h00
  2. [ODBC] problème d'export du contenu de <textarea> vers un fichier csv
    Par maraly dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 27/04/2007, 09h14
  3. exporter contenu d'un fichier excel vers base mysql ?
    Par ouldfella dans le forum Requêtes
    Réponses: 5
    Dernier message: 08/03/2007, 10h31
  4. Réponses: 2
    Dernier message: 28/02/2007, 20h57
  5. Enregistrer contenu XML en mémoire vers un fichier
    Par kingmandrax dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 26/10/2006, 10h24

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