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

VC++ .NET Discussion :

[Visual C++] Erreur dans BinaryReader


Sujet :

VC++ .NET

  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 80
    Par défaut [Visual C++] Erreur dans BinaryReader
    Bonjour ,

    j'ai un probléme pour charger mon fichier binaire dans la TextBox
    La ou je bloque:


    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 button1_Click( System::Object^  sender, System::EventArgs^  e) 
    	{
     
    	BinaryReader ^br;
    	FileStream ^fs;
         // Stream^ myStream;
     
     
     
    	        String^ fileName = "Fichier.bin";
    		fs = File::Open(fileName, FileMode::Open);
    	        br = gcnew BinaryReader(fs);
     
     
     
     
     
     
    	OpenFileDialog^ openFileDialog1 = gcnew OpenFileDialog;
            openFileDialog1->Title = "Choisissez les Fichiers";
    	openFileDialog1->FileName = nullptr;
    	openFileDialog1->DefaultExt = "Bin";
    	openFileDialog1->Filter = "Fichiers (*.Bin)|*.Bin"; //|Tous (*.*)|*.*
    	openFileDialog1->CheckFileExists = true;
    	// openFileDialog1->Multiselect = true;
     
     
                // si l'opendialog est chargé alors on charge le fichier dans la TextBox 
     
    	if (openFileDialog1->ShowDialog() ==    System::Windows::Forms::DialogResult::OK)
    		loadToTextBox(openFileDialog1->FileName);
     
     
    	}








    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
    36
     
     
    // on créer les instructions pour la textBox 
     
    void loadToTextBox(String ^fileName)
    {
     
     
     
    FileStream ^fs;
    BinaryReader ^br;
     
     
     
    // on créer le BinaryReader
    BinaryReader ^br = gcnew BinaryReader(fs);
     
    // On lit depuis le début du fichier
    br->BaseStream->Seek(0,SeekOrigin::Begin);
     
     
     
    // Si on est pas a la fin du fichier
    while (fs->Position < fs->Length)
     
    // On charge le fichier dans la txt_box
    this->textBox->Text = br->ReadInt32().ToString();
     
    }
     
     
    br->Close(); // On ferme le fichier en lecture
     
     
     
    } // Fin d'intructions


    Le fichier est charger mais seule la premiére ligne du fichier binaire est lue avec ce code .


    Mon code est basé sur l'article de nico pyright ();


    Fred .

  2. #2
    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
    Par défaut
    quand tu fais ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this->textBox->Text = br->ReadInt32().ToString();
    que fais-tu ?
    tu affectes au textbox la valeur lue (un entier) ; en imaginant que tu fasses une boucle, tu réécrases le contenu du textbox à chaque itération.

    Si tu veux lire tout en une seule fois, tu peux lire un nombre de bytes équal à la taille du fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ReadBytes((int)fs->Length)

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 80
    Par défaut
    Salut nico-pyright(c) ,


    Donc, si je change mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this->textBox->Text = br->ReadBytes((int)fs->Length)
    Avec ce code le fichier binaire va charger tout le fichier binaire sur une txt_Box ?

    Merci pour tes conseils .

  4. #4
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 80
    Par défaut
    Salut Nico ,
    J'éspére que tu va bien ?


    Merci pour ton code , mais ton code ne fonctionne pas , c'est la méme chose dans la txt_Box y'a que la premiére ligne qui est chargée .






    Merci Nico Pyright pour tes conseils et tes suggéstions .

  5. #5
    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
    Par défaut
    Citation Envoyé par Fred.77 Voir le message
    Salut Nico ,
    J'éspére que tu va bien ?
    ca va, pas trop dormi, mais c'est la vie

    Citation Envoyé par Fred.77 Voir le message
    Merci pour ton code , mais ton code ne fonctionne pas , c'est la méme chose dans la txt_Box y'a que la premiére ligne qui est chargée .

    Merci Nico Pyright pour tes conseils et tes suggéstions .
    Je vois pas trop l'intéret d'afficher un fichier binaire en mode texte, mais bon ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    FileStream ^fs = File::Open("c:\\test.txt", FileMode::Open);
    BinaryReader ^br = gcnew BinaryReader(fs);
    textBox1->Text = System::Text::Encoding::ASCII->GetString(br->ReadBytes((int)fs->Length));
    br->Close();

  6. #6
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 80
    Par défaut
    Citation Envoyé par nico-pyright(c) Voir le message
    ca va, pas trop dormi, mais c'est la vie

    Salut ,

    A qui tu le dis Nico Pyright , moi ça fait 7 ans que je dors 3 heures par nuit
    j'aime travailler la nuit , la journée je suis assez actif et la nuit je travail sur quelques projects perso .

    Revenant a notre code , je ne vouderais pas l'ouvrir spécialement en mode text Nico , c'est juste que je débute en C++/CLI et j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this->TextBox->Text = br->ReadBytes((int)fs->Lenght);
    je souhaite affichier un fichier binaire déja , ensuite approfondir mon code .
    Je vais essayé ton code tou de suite et je vais voir le résultat .


    Fred .

  7. #7
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 80
    Par défaut
    Nico y'a que la premiére ligne du fichier affichée en mode ASCII c'est a dire du texte quoi , tu pourras vérifier toi méme en créant un simple boutton et une
    txtBox , tu verras toi méme Nico , y'a que la premiére ligne qui est lue .

  8. #8
    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
    Par défaut
    c'est parce que le textbox ne sait pas afficher des caractères bizarres binaires, il est fait pour afficher du texte.

  9. #9
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 80
    Par défaut
    Oui , c'est normal , merci en tout cas pour tes efforts ainsi que ton temps , est ce qui il éxiste une méthode pour charger un fichier binaire dans une textBox ou une richtextBox ?


    J'ai une Form , une TextBox et un boutton et je veux afficher et charger un fichier binaire dans ma richtxtBox ou ma textBox .

  10. #10
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 80
    Par défaut
    Lu Nico Pyright ();


    Voila j'ai créer un autre code en C# et ça marche trés bien , il suffit d'avoir de l'imagination dans son 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
    36
    37
    38
     
    private void button1_Click(object sender, System.EventArgs e)
    		{
     
     
                fs = new FileStream("c:\\test.bin", FileMode.Open, FileAccess.Read);
                br = new BinaryReader(fs);
                br.BaseStream.Seek(0, SeekOrigin.Begin);
     
     
     
    			string ch = "";
    			long nbr;
     
    			int i = 0;
    			for(;;)
    			{
    				i++;
     
          // entier 8 bytes signé 
         // la fonction br.ReadBytes((int)fs.Lenght); ne fonctionne pas C#
                    nbr = br.ReadInt64();  
     
    				ch = ch + nbr.ToString() + " ";
    				if (i % 25 == 0)
    				{
    					ch = ch + "\n"; // retourn a la ligne 
    				}
    				if(i == 500)
    					break;
    			}
    			br.Close();
    			fs.Close();
                // affiche le contenu du fichier dans la txt_Box
              // ch pointeur sur le contenu  du fichier
                this.textBox.Text = (ch); 
     
    		}


    Je crois que je vais me pencher sur le C# , car sous C++/CLI j'ai du mal a lire un fichier binaire et l'afficher sur l'écran .

  11. #11
    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
    Par défaut
    ben là, il suffit de faire pareil en C++/CLI
    C'est ce que fait notepad, il "traduit" ou zappe les caractères qu'on ne peut pas afficher

  12. #12
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 80
    Par défaut
    Je me sent trés a l'aise en C# nico pyright ();

    je crois qu'on va mettre résolu car j'ai su le faire en CSharp , encore une fois merci pour ta présence et tes conseils nico .

    j'aime bien ta tof en dirait superman

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

Discussions similaires

  1. Arret sur toutes les erreurs dans visual studio .net
    Par ramzio dans le forum Windows Forms
    Réponses: 4
    Dernier message: 26/05/2009, 12h50
  2. Réponses: 4
    Dernier message: 05/09/2008, 17h49
  3. Message d erreur dans Visual Studio 2005
    Par idream dans le forum VB.NET
    Réponses: 7
    Dernier message: 03/03/2008, 10h16
  4. Directshow & Visual Studio 8 : erreur dans la compilation
    Par L'elfe d'Azur dans le forum Windows
    Réponses: 5
    Dernier message: 03/10/2007, 13h21
  5. [VBA-E]Excel: RechercheV avec erreur dans visual basic
    Par bonus23 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/03/2007, 14h08

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