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 :

probl�me �criture sur un fichier


Sujet :

MFC

  1. #1
    Membre �clair�
    Inscrit en
    Juin 2003
    Messages
    270
    D�tails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 270
    Par d�faut probl�me �criture sur un fichier
    Bonjour,

    je souhaite �crire une CString dans un fichier. Voici comment j'essaye de le faire:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    CFile fichier;
    CString desc = "Le texte que je souhaite afficher";
    fichier.Open(fileName,CFile::modeWrite);
    fichier.Write((LPCTSTR)desc, desc.GetLength());
    fichier.Close;
    Mon texte s'affiche � moiti� et il y a un espace qui est ins�r� entre chaque caract�re: "L e t e x t e q u e j e s"

    Si je change: desc.GetLength() en 2*desc.GetLength()
    le texte s'affiche enti�rement, mais il y a toujours un espace entre chaque caract�re.

    Est-ce que quequ'un sait comment faire ?

    Ca m'aiderait beaucoup !

  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
    salut,
    hum ton projet serait pas en unicode par hasard ?

  3. #3
    Membre �clair�
    Inscrit en
    Juin 2003
    Messages
    270
    D�tails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 270
    Par d�faut
    Oui, �a doit �tre �a. Dans les propri�t�s de mon projet, jeu de caract�re �tait mis � UNICODE. Je l'ai mis � non d�fini, mais �a ne r�soud pas mon probl�me.

    Que dois-je faire ?

    EDIT: et y a t-il un moyen d'obtenir un r�sultat correct m�me si le projet est en UNICODE ?

    Merci.

  4. #4
    Membre �clair�
    Inscrit en
    Juin 2003
    Messages
    270
    D�tails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 270
    Par d�faut
    J'applique d�sormais cette m�thode:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    	unsigned char *donnees = NULL;
    	CFile fichier;
    	long taille = buffer.GetLength();
     
    	donnees = new unsigned char[taille];
     
    	for (int i = 0;i<taille;i++) donnees[i] = buffer[i];
     
    	_wremove(fileName);
     
    	fichier.Open(fileName,CFile::modeCreate | CFile::modeWrite);
    	fichier.Write(donnees, taille);
    Ca marche � un d�tail pr�s: il y a des caract�res sp�ciaux qui s'ins�rent au milieu de ma cha�ne de caract�res. Celle-ci est constitu�e de diff�rents attributs r�cup�r�s dans une base de donn�e, et ils semblent OK.

    D'o� �a peut venir ?

    Pfff, tout �a pour la cr�ation d'un pauvre fichier texte, c'est d�moralisant.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    Juin 2007
    Messages
    5
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Directeur technique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Juin 2007
    Messages : 5
    Par d�faut
    Tr�s tr�s bizare...

    Je chercais � faire la m�me chose que toi, et en utilisant un code similaire � celui de ton premier post, j'obtenais les m�me r�sultat que toi (� savoir des caract�res espac�s et la seulement la moiti� de la taille de la chaine souhait�es).

    Ta deuxi�me m�thode ne m'enchantant pas plus que �a (lol), je me suis orient� sur une �ventuelle modification du jeu de caract�re (de l'UNICODE � l'MBCS et inversement). J'ai donc modifier mon code de mani�re � convertir les fonctions utilis�es en MBCS, celle de l'unicode ne marchant plus.

    Ex :
    UNICODE -> GetWindowTextW
    MBCS -> GetWindowTextA

    Je me suis alors rendu compte que le compilateur acceptait la fonction GetWindowText qui doit s'adapter directement je pense au jeu de caract�re s�lectionn�.

    J'ai donc r�essayer de compiler mon code une derni�re fois en UNICODE afin d'effectuer un derni�re essai et abandonner d�finitivement le fait d'�crire dans un fichier texte avec une appli MFC, et l� magie... le texte du fichier �tait entier et non espac�.

    J'ai du coups r�alis� des modifications � mon code pour valider cette d�couverte, de mani�re � �tre sur que ce ne soit pas un bug de ma machine, mais les r�sultats sont toujours bon.

    Peut �tre que ce post de ma part ne servira pas � grand chose, mais ce qui tomberont dessus pourront toujours essay� de creuser un plus le sujet dans cette direction.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Lecture et �criture sur un fichier txt
    Par freemanqc dans le forum Langage
    R�ponses: 13
    Dernier message: 28/02/2008, 05h29
  2. Droit en �criture sur des fichiers
    Par HULK dans le forum VB.NET
    R�ponses: 2
    Dernier message: 26/10/2007, 10h09
  3. Probl�me �criture dans un fichier
    Par bob_warrior89 dans le forum C
    R�ponses: 11
    Dernier message: 14/06/2007, 15h37
  4. [Rman]probl�me �criture sur fichier (linux)
    Par Invit� dans le forum Oracle
    R�ponses: 20
    Dernier message: 30/08/2006, 05h52

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