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 :

Comment ecrire un charactere 0x00 avec les CFile


Sujet :

MFC

  1. #1
    Membre habitué
    Avatar de barthelv
    Inscrit en
    Mars 2003
    Messages
    267
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 267
    Points : 126
    Points
    126
    Par défaut Comment ecrire un charactere 0x00 avec les CFile
    Bonjour,

    Je viens de decouvrir un probleme avec les CFile, je ne peux pas ecrire de caractere 0x00. Ils sont systematiquement remplaces par 0x0D 0x0A Comment est-ce que je peux faire ?

  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
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    ton CFile est en mode CFile::typeBinary ? (je ne pense pas... )

  3. #3
    Membre habitué
    Avatar de barthelv
    Inscrit en
    Mars 2003
    Messages
    267
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 267
    Points : 126
    Points
    126
    Par défaut
    j'ai essaye mais cela ne change rien... Or dans la doc il y a marque que cela ne peut etre utilise que dans une classe derivee... Et le je ne comprends pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    	CFile MyFile1, MyFile2;
      char Buff[10] = {{0x31},{0x31},{0x31},{0x31},{0x00},{0x00},{0x31},{0x31},{0x31},{0x31}};
     
      MyFile1.Open("c:\\temp\\toto1.txt", CFile::modeCreate | CFile::modeWrite | CFile::shareExclusive, NULL);
      MyFile2.Open("c:\\temp\\toto3.txt", CFile::modeCreate | CFile::modeWrite | CFile::shareExclusive | CFile::typeBinary, NULL);
     
      MyFile1.Write(Buff, sizeof(Buff));
      MyFile2.Write(Buff, sizeof(Buff));
     
      MyFile1.Close();
      MyFile2.Close();
    Dans les deux cas j'obtiens la suite d'octets suivante:

    31 31 31 31 0D 0A 0D 0A 31 31 31 31

  4. #4
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    comment l'obtiens-tu ? à la relecture ?
    comment relis-tu ?

  5. #5
    Membre habitué
    Avatar de barthelv
    Inscrit en
    Mars 2003
    Messages
    267
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 267
    Points : 126
    Points
    126
    Par défaut
    Avec pspad editor.... c'est un editeur hexa decimal gratuit

  6. #6
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    j'ai fait ce petit test, ca marche bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	   CFile f1 ("c:\\test.txt", CFile::modeCreate | CFile::modeWrite  | CFile::typeBinary );
    	   BYTE buffer[10] = {1,0,0,1,1,0};
    	   f1.Write(buffer, 6 * sizeof(BYTE));
    	   f1.Close();
    à la relecture aussi et en l'éditant avec Visual C++ aussi

  7. #7
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    d'ailleurs, en testant directement avec ton code, cela fonctionne aussi ...

    es-tu sur que ca vient pas de ton éditeur gratuit ?

  8. #8
    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
    Points : 17 323
    Points
    17 323
    Par défaut
    un conseil detruit ton fichier ...
    et retest

  9. #9
    Membre habitué
    Avatar de barthelv
    Inscrit en
    Mars 2003
    Messages
    267
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 267
    Points : 126
    Points
    126
    Par défaut
    Ok, j'ai fais le test que tu me dis et cela fonctionne. Si par contre je remplace tes 1 par 0x01 et tes 0 par 0x00, ben il remplace a nouveau les 0x00 par des 0x0D 0x0A

  10. #10
    Membre habitué
    Avatar de barthelv
    Inscrit en
    Mars 2003
    Messages
    267
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 267
    Points : 126
    Points
    126
    Par défaut
    Citation Envoyé par nico-pyright(c)
    d'ailleurs, en testant directement avec ton code, cela fonctionne aussi ...

    es-tu sur que ca vient pas de ton éditeur gratuit ?

    AAAAAAAAAAHHHH la vache, si j'ouvre le fichier texte en hexa avec visual et non pas pspad, il y a bien des 00 !!!! et non pas des 0D 0A, meme sans mettre mode binary

    Merci beaucoup a vous deux !

  11. #11
    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
    Points : 17 323
    Points
    17 323
    Par défaut
    Citation Envoyé par barthelv
    AAAAAAAAAAHHHH la vache, si j'ouvre le fichier texte en hexa avec visual et non pas pspad, il y a bien des 00 !!!! et non pas des 0D 0A, meme sans mettre mode binary

    Merci beaucoup a vous deux !
    si on ne peut plus faire confiance aux outils gratuits...

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 10/07/2006, 20h55
  2. Réponses: 6
    Dernier message: 18/05/2006, 14h11
  3. Réponses: 1
    Dernier message: 03/05/2006, 10h49
  4. [Fichier] Comment ecrire ds 1 fichier avec 1 chemin
    Par Radagast dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 05/04/2005, 14h01
  5. Comment bien gerer la mémoire avec les TStringList?
    Par david_chardonnet dans le forum Langage
    Réponses: 5
    Dernier message: 18/06/2003, 09h57

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