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

MFC Discussion :

Ecrire dans un fichier RTF avec CStdioFile


Sujet :

MFC

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 227
    Par défaut Ecrire dans un fichier RTF avec CStdioFile
    salut à tous!

    Voilà je désirais ecrire dans un fihier RTF contenant déjà du texte à l'interieur.
    J'arrive bien à lire ce fichier mais pas moyen d'écrire dedans.

    En fait je recherche la présence d'un champ dans une ligne de ce fichier je récupère la ligne et je modifie ce champ, jusque la tout va bien mon problème est pour réécrire cette ligne dans le fichier, voici une parti du code.

    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
    //Creation du flux d'entrée sortie
    		CStdioFile* report = new CStdioFile(PathOfFile,CFile::modeReadWrite | CFile::typeText);
     
    		//lecture et modification des champs correspondant
    		//Lecture des champs dans le fichier d'entrée speedotruck
    		while(FileInPosition!=report->GetLength())
    		{
    			//Lecture de la ligne
    			FileInLenght	= report->ReadString(line);
    			//récupération de la position courante dans le fichier
    			FileInPosition	= (int)report->GetPosition();
     
    			if(line.Find("[STR_X]")>= 0)
    			{
    				CString str_y;
    				int y=12;
     
    								str_y.Format("%d",y);
    				line.Replace("[STR_X]",str_y);
    				report->WriteString(line.GetBuffer());
     
     
    			}
    }
    report->Close()
    Quelqu'un aurait it une idée de mon erreur?

    Merci d'avance.

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    tu ne peux pas procéder ainsi.
    en dehors du fait que tu ne mémorise pas la position du curseur au bon endroit et tu ne le re déplace pas avant d'écrire.
    si ce que tu ecris est plus long ou court que ce qui existe ça ne peut pas fonctionner.
    il te faut lire le fichier en mémoire (d'un seul bloc) par exemple , remplacer dedans et le réécrire.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 227
    Par défaut
    om merci farscape!

    En gros il faut que je mette le contenu du fichier en mémoire, que j'efface le contenu du fichier, que je modifie le contenu en mémoire et que je le réécrive dans le fichier .

    Ai je bien compris?

    Merci

  4. #4
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    oui c'est cela , utilise un objet CFile en mode d'ouverture binaire pour lire le fichier .
    la méthode GetLength donne la longueur du fichier pour prévoir l'allocation mémoire.
    en précisant le mode CFile::modeCreate le fichier sera écrasé automatiquement pour la réécriture...
    en gros:
    lecture complète du fichier en mémoire et fermeture.
    remplacement en mémoire
    écriture du nouveau fichier en mode écrasement.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 227
    Par défaut
    ok dac!

    Merci bien je vais faire tout cela.

    merci encore

    Kemanke

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 227
    Par défaut
    Y'aurait un lien avec un exemple de ce que je désire faire, ou quelque chose qui s'en raproche?

    Merci d'avance

  7. #7
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 227
    Par défaut
    Non c'était bon en fait!
    Ce que j'avais fait fonctionne plutot pas mal!

    Merci a toi encore une fois!

    Kemanke

  9. #9
    Membre chevronné Avatar de stephdim
    Profil pro
    Inscrit en
    Août 2007
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 462
    Par défaut
    Ce que j'avais fait fonctionne plutot pas mal!
    Alors là je suis surpris
    Le code que tu présentes dans le 1er post ne peut pas fonctionner comme tu le souhaites.

    Sois tu fais des ReadString() / WriteString() sur des CStdioFile, mais il te faut alors un fichier de destination différent du fichier source, sois tu fais comme farscape a dit, tu charges tout en mémoire, tu fais les modifs et tu enregistres le fichier.

    @+

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

Discussions similaires

  1. Ecrire dans un fichier texte avec ant
    Par osman.amine dans le forum ANT
    Réponses: 1
    Dernier message: 18/08/2010, 17h24
  2. [WD 11] ecrire dans un fichier texte avec foAjout
    Par WDKyle dans le forum WinDev
    Réponses: 3
    Dernier message: 29/04/2009, 15h08
  3. ecrire dans un fichier xml avec php
    Par gilbertbicot dans le forum Langage
    Réponses: 1
    Dernier message: 21/01/2009, 13h10
  4. lire/ecrire dans un fichier .mat avec C++
    Par WELCOMSMAIL dans le forum C++
    Réponses: 6
    Dernier message: 11/09/2007, 13h19
  5. comment ecrire dans un fichier txt avec WriteFile?
    Par Art19 dans le forum Langage
    Réponses: 13
    Dernier message: 04/07/2007, 15h50

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