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 :

Lecture binaire : Quelques soucis


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de poussinphp
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    428
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 428
    Par défaut Lecture binaire : Quelques soucis
    Bonjour à tous !

    J'essaye de lire un fichier binaire et j'ai quelques soucis pour récupérer les informations. Je viens d'un bout de code c++ et je n'arrive pas à le faire en C#. J'aimerais lire une certaine longueur dans mon fichier et écrire dedans.

    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
     
            private static void lireBSP()
            {
                FileStream f = File.Open("test1.bsp", FileMode.Open, FileAccess.Read);
                BinaryReader br = new BinaryReader(f);
                BSP_HEADER header = new BSP_HEADER();
                br.Read(header, Marshal.SizeOf(header), 1);
            }
        }
        public class BSP_HEADER
        {
            char[] chaine = new char[4];
            int version;
            BSP_DIRECTORY_ENTRY[] directoryEntries = new BSP_DIRECTORY_ENTRY[17];
        }
     
        class BSP_DIRECTORY_ENTRY
        {
            public int offset;
            public int length;
        }
    le soucis viens de cette ligne : br.Read(header, Marshal.SizeOf(header), 1);
    Il me dit qu'il peut pas le convertir en char[]. Je comprend l'erreur mais je ne sais pas comment la résoudre. Auriez-vous une solution?

    Merci

  2. #2
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Salut

    Comment est déclaré BSP_HEADER ?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 88
    Par défaut
    Si br.Read attend un char[] comme paramètre, tu ne peux pas lui passer BSP_HEADER.

    De même, le Marshal.SizeOf(header) me semble douteux ...

  4. #4
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Oups

    Je viens de voir que je n'avais pas vu les déclaration

    A mon avis, tu a intéret dans ce cas ci de faire des Read typés

    Voici en gros un exemple d'un truc un peu similaire a ta situation

    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
         Stream bs = File.Open(datapath, FileMode.Open, FileAccess.Read, FileShare.Read);
          BinaryReader binReader = new BinaryReader(bs, Encoding.Default);
     
          head xx = new head();
     
          xx.ver = binReader.ReadInt32();
          xx.nbIdx = binReader.ReadInt32();
          xx.posData = binReader.ReadInt32();
          binReader.BaseStream.Position = 4096;
     
     
          binReader.BaseStream.Position = 4096 + icp.posData + (xx.nbIdx * 13);
     
          for (i = 0; i < icp.nbIdx; i++)
          {
            Rue r = new Rue();
            r.Id = binReader.ReadInt32();
            r.Nom = binReader.ReadString();
            tRues.Add(r);
          }
          binReader.Close();

Discussions similaires

  1. quelques soucis de lecture de fichiers avec fscanf
    Par monsieurab dans le forum Bibliothèque standard
    Réponses: 2
    Dernier message: 05/11/2008, 14h28
  2. Réponses: 27
    Dernier message: 12/01/2006, 11h04
  3. [POSTGRES 8] [INSTALLATION] [DEBIAN] Quelques soucis
    Par julienOriano dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 24/06/2005, 10h55
  4. [Swings]Quelques soucis à l'affichage !
    Par julienOriano dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 23/09/2004, 13h22
  5. quelques soucis avec word 2000
    Par ramchou dans le forum Word
    Réponses: 3
    Dernier message: 06/09/2004, 18h13

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