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++ Discussion :

Append dans un fichier existant


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 18
    Par défaut Append dans un fichier existant
    Bonjour,

    Je cherche a creer un fichier "toto.xml" et a dumper dedans une structure (tout fonctionne). Mais lorsque je veux rajouter des infos a ce fichier (et non ecraser son contenu), je n'y arrive pas... voici mon 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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    void DumpIntoFile(string monContenu, bool trash)
    {
    //Je passe trash = true ou false si je veux ecraser ou append le fichier
     
    	HANDLE			hFile = NULL;
    	unsigned int	flag;
     
    	if (trash)
    		flag = CREATE_ALWAYS;
    	else
    		flag = OPEN_ALWAYS;
     
    	// The file should always be created, trash it if it exists beforehand.
    	hFile = CreateFile(
    		fileName.c_str(),
    		GENERIC_READ|GENERIC_WRITE,
    		NULL,
    		NULL,
    		flag,
    		FILE_ATTRIBUTE_NORMAL,
    		NULL);
     
    	if (hFile == INVALID_HANDLE_VALUE)
    	{
    		return NULL;
    	}
     
    	SetEndOfFile(hFile);
     
    	LetsWrite(hFile, monContenu);
     
    	CloseHandle(hFile);
    //...
    }
    Quoiqu'il arrive, malgre mon "SetEndOfFile(...)", lorsque je met mon "trash=false" le contenu de mon fichier est ecrase des que j'appelle "DumpIntoFile" alors qu'il devrait normalement mettre le pointeur du fichier a la fin...

    Une idee ?

    Merci !

  2. #2
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Pas d'idée, juste une question :
    Pourquoi ne pas utiliser les fstream de la STL ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 18
    Par défaut
    Par soucis de coherence avec le code deja en place
    C'est impose

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 18
    Par défaut
    Help

  5. #5
    Membre éprouvé
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Décembre 2005
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Décembre 2005
    Messages : 109
    Par défaut
    A mon avis, la réponse à ton problème se trouve ici : http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wcefiles/html/_wcesdk_Read_Write_Example.asp

    MSDN est une très bonne documentation, surtout quand il s'agit s'un soucis avec l'API Windows ^^

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 18
    Par défaut
    Merci ca fonctionne.
    Je n'avais pas trouve tout ceci sous la MSDN.

    A titre d'info il faut remplacer "SetEndOfFile(hFile)" par "SetFilePointer(hFile, 0, NULL, FILE_END);".

    Pourquoi ? Je ne sais pas, mais ca fonctionne ...

  7. #7
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Parce SetEndOfFile() sert à tronquer un fichier: La fin du fichier devient l'endroit où se trouve le "pointeur".

    Là, le pointeur était à zéro après l'ouverture, sont le SetEndOfFile() ramenait le fichier à la taille zéro...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

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

Discussions similaires

  1. [C#] Ecriture et append dans un fichier XML
    Par DelphiCool dans le forum ASP.NET
    Réponses: 3
    Dernier message: 18/03/2008, 07h33
  2. placer des balise xml au bon endroit dans le fichier existant.
    Par calimero91 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 07/01/2008, 09h43
  3. Comment écrire du texte dans un fichier existant?
    Par Immothep dans le forum Linux
    Réponses: 1
    Dernier message: 20/06/2007, 15h00
  4. Réponses: 9
    Dernier message: 07/09/2006, 13h47
  5. Ecrire dans un fichier existant
    Par perlgirl dans le forum Langage
    Réponses: 6
    Dernier message: 05/01/2006, 06h07

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