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

Windows Forms Discussion :

[C#] Problème de char[] [Débutant(e)]


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Inscrit en
    Août 2003
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 53
    Points : 47
    Points
    47
    Par défaut [C#] Problème de char[]
    J'ai écrit un bout de code, mais je suis sûr qu'il y a beaucoup plus simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    //Lecture dans le fichier
    char[] m_lib_site = bReader.ReadChars(16);
     
    //Affichage des données lues
    richTextBox1.AppendText("m_lib_site : ");
    for (int i = 0; i < m_lib_site.Length; i++)
         richTextBox1.AppendText(Convert.ToString(m_lib_site[i]));
    richTextBox1.AppendText("\n");
    Devoir copier caractère par caractère la chaine pour l'afficher me semble aberrant.

    Autre problème, certains caractères ne s'écrivent pas : ainsi la chaine dans le fichier binaire "générale" s'affiche dans ma richTextBox1 "gnrale"... Une solution?

  2. #2
    Membre expérimenté
    Avatar de freddyboy
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2003
    Messages
    810
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2003
    Messages : 810
    Points : 1 696
    Points
    1 696
    Par défaut
    tu dois pouvoir faire un string str = m_lib_site.ToString(); et apres richTextBox1.AppendText(str)...enfin il faut essayer...

    @+
    Someday I will be the most powerful Jedi !

    Freddyboy - Blog

  3. #3
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Citation Envoyé par freddyboy
    tu dois pouvoir faire un string str = m_lib_site.ToString(); et apres richTextBox1.AppendText(str)...enfin il faut essayer...

    @+
    C'est aussi la première chose que j'aurai essayé

    Maitenant, c'est un tableau donc il est possible que tu sois obligé d'itérer sur chacune des cases pour les afficher...

    A tester donc

  4. #4
    Membre du Club
    Inscrit en
    Août 2003
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 53
    Points : 47
    Points
    47
    Par défaut
    Quand je fais ca, il m'affiche : "System.char[]", au lieu du contenu du tableau... :s

    Et pour le problème de lecture des caractères avec accent, une idée?

  5. #5
    Membre expérimenté
    Avatar de freddyboy
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2003
    Messages
    810
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2003
    Messages : 810
    Points : 1 696
    Points
    1 696
    Par défaut
    ok c'etait previsible, alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    string str = new String(m_lib_site);
    @+
    Someday I will be the most powerful Jedi !

    Freddyboy - Blog

  6. #6
    Membre du Club
    Inscrit en
    Août 2003
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 53
    Points : 47
    Points
    47
    Par défaut
    merciiiiiiiii ca marche impec

  7. #7
    Membre du Club
    Inscrit en
    Août 2003
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 53
    Points : 47
    Points
    47
    Par défaut
    Euh, en fait pas tant que ça...
    Nouveau code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    //Lecture dans le fichier
    char[] m_lib_site = bReader.ReadChars(8);
    byte m_typ_equip = bReader.ReadByte();
    byte m_num_equip = bReader.ReadByte();
     
    //Affichage des données lues
    richTextBox1.AppendText("m_lib_site : " + new string(m_lib_site) + "\n");
    Et bien le soucis, c'est que si le caractère comporte un accent, et bien il ne le lit pas, mais (et c'est largement plus embettant!!!) il lit le caractère suivant à la place! En clair, si dans mon fichier j'ai : "générale" suivie de deux Bytes, alors il remplace les é en se décalant. Du coup, il lit la chaine avec deux caractères en trop, et arrivé sur les deux bytes, il n'y a plus rien à lire!

  8. #8
    Membre expérimenté
    Avatar de freddyboy
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2003
    Messages
    810
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2003
    Messages : 810
    Points : 1 696
    Points
    1 696
    Par défaut
    je pense que c'est un histoire d'encodage, tu peux nous donner la definition de bReader svp ?

    @+
    Someday I will be the most powerful Jedi !

    Freddyboy - Blog

  9. #9
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut

    j'ai le même problème que toi il y a peu (au sujet des accent) et je m'en suis sorti avec System.Text.Encoding.Default.

  10. #10
    Membre du Club
    Inscrit en
    Août 2003
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 53
    Points : 47
    Points
    47
    Par défaut
    Oui ce sera peut etre plus simple en vous donnant le code complet :
    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
                string file_name = openFileDialog1.FileName;
     
                System.IO.FileInfo fileInfo = new System.IO.FileInfo(file_name);
                System.IO.FileStream fileStream = fileInfo.OpenRead();
     
                if (fileStream.CanRead)
                {
                    richTextBox1.Clear();
                    System.IO.BinaryReader bReader = new System.IO.BinaryReader(fileStream);
     
                    try
                    {
                         //Lecture dans le fichier
                         char[] m_lib_site = bReader.ReadChars(8);
                         byte m_typ_equip = bReader.ReadByte();
                         byte m_num_equip = bReader.ReadByte();
     
                        //Affichage des données lues
                        richTextBox1.AppendText("m_lib_site : " + new string(m_lib_site) + "\n");
                        richTextBox1.AppendText("m_typ_equip : " + m_typ_equip + "\n");
                        richTextBox1.AppendText("m_num_equip : " + m_num_equip + "\n");
                   }
                    finally
                    {
                        bReader.Close();
                    }
                }

  11. #11
    Membre expérimenté
    Avatar de freddyboy
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2003
    Messages
    810
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2003
    Messages : 810
    Points : 1 696
    Points
    1 696
    Par défaut
    ok pour ton System.IO.BinaryReader tu as un second constructeur qui prend l'encodage en second parametre.
    il faut a mon avis bidouiller avec ca, un truc du genre :
    System.IO.BinaryReader(filestream, System.Text.Encoding.Default) ou un truc comme ca...enfin je pense...

    @+
    Someday I will be the most powerful Jedi !

    Freddyboy - Blog

  12. #12
    Membre du Club
    Inscrit en
    Août 2003
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 53
    Points : 47
    Points
    47
    Par défaut
    Après avoir essayé tous les codages possibles, voilà la ligne à mettre :
    System.IO.BinaryReader bReader = new System.IO.BinaryReader(fileStream, System.Text.Encoding.UTF7);
    Merci beaucoup pour ton aide et tes réponses rapides

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

Discussions similaires

  1. Problème de char *
    Par oursDamour dans le forum Débuter
    Réponses: 10
    Dernier message: 24/02/2009, 07h07
  2. Problème bête char*
    Par PP(Team) dans le forum C
    Réponses: 20
    Dernier message: 17/09/2008, 23h29
  3. Problème avec char
    Par choupinette116 dans le forum Débuter
    Réponses: 7
    Dernier message: 23/04/2008, 10h30
  4. Problème Cast char* en std::string
    Par inovah dans le forum SL & STL
    Réponses: 1
    Dernier message: 30/10/2007, 16h32
  5. Classe clavier problème avec char
    Par benjiprog dans le forum Langage
    Réponses: 30
    Dernier message: 30/06/2006, 16h04

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