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 :

code de chargement de bmp : erreur


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Lycéen
    Inscrit en
    Novembre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2006
    Messages : 105
    Par défaut code de chargement de bmp : erreur
    salut

    j'essay de coder une petite fonction de loading de bmp. or, voila, j'ai un probleme (qui n'a pas grand chose a voir avec le but de mon code dailleur ....)

    efin, voila le code :
    Code : C
    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    #include <stdio.h>
    #include <stdlib.h>
    #include <dos.h>
    #include <mem.h>
    
    /* Définition des types de variables : */
    typedef unsigned char  byte;    /* */
    typedef unsigned short word;    /*  0xF  */
    typedef unsigned long  dword;   /* 0xFF */
    
    /* Définition de la structure d'un header de fichier BMP */
    typedef struct _BMP_HEAD {
            word Type;              /*File type. Set to "BM".*/
            dword Size;             /*Size in BYTES of the file.*/
            dword Reserved;                 /*Reserved. Set to zero.*/
            dword Offset;       /*Offset to the data.*/
            dword headerSize;             /*Size of rest of header. Set to 40.*/
            dword Width;          /*Width of bitmap in pixels.*/
            dword Height;       /*Height of bitmap in pixels.*/
            word Planes;          /*Number of Planes. Set to 1.*/
            word BitsPerPixel;           /*Number of bits per pixel.*/
            dword Compression;           /*Compression. Usually set to 0.*/
            dword SizeImage;               /*Size in bytes of the bitmap.*/
            dword XPixelsPerMeter;  /*Horizontal pixels per meter.*/
            dword YPixelsPerMeter;  /*Vertical pixels per meter.*/
            dword ColorsUsed;             /*Number of colors used.*/
            dword ColorsImportant;  /*Number of "important" colors.*/
    } BMP_HEAD ;
    
    /* Pointeur sur la mémoire vidéo VGA 13H */
    byte *VGA=(byte *) MK_FP(0xA000,0);
    
    
    void load_bmp(char *file,BITMAP *b)
    {
      FILE *fp;
    
      /* open the file */
      if ((fp = fopen(file,"rb")) == NULL)
      {
        printf("Erreur l'ors de l'ouverture du fichier %s.\n",file);
        exit(1);
      }
      fread(&b,sizeof(BMP_HEAD), 0, fp);
     /*cette ligne est un genre de test pour verifier la bonne marche du chargement du header avant de continuer le codage */
     printf("variables : \n  type :%s\n  Width :%d\n   Height :%d\n", b.Type, b.Width, b.Height);
     
     }
     
    int main()
    {
    BMP_HEAD bmp;
      load_bmp("rocket.bmp",&bmp);
      getch();
    
    }

    or voila, la ligne rouge me renvoie cette erreur :
    "Illegal structure operation in function load_bmp"

    pourriez vous m'en indiquer la raison ?

    ---> je compile mon code sous TurboC

    merci, ++ Tix.

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    sizeof(*type) n'est pas du C valide.
    On utilise sizeof(type) ou sizeof(*pointeur).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre confirmé
    Profil pro
    Lycéen
    Inscrit en
    Novembre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2006
    Messages : 105
    Par défaut
    certe, mo code n'était pas a jour, je n'ai pas l'asterix dans le code que j'ais testé, dsl :s

    merci pour ta reponse.

  4. #4
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par tixweb
    certe, mo code n'était pas a jour,
    Arf, tu postes du code qui n'est pas à jour ?

  5. #5
    Membre confirmé
    Profil pro
    Lycéen
    Inscrit en
    Novembre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2006
    Messages : 105
    Par défaut
    ca y ets, il est modifié... je n'avais pas pris en comte mes dernieres modifs ^^

  6. #6
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    void load_bmp(char *file,BITMAP *b)
    ....
     fread(&b,sizeof(BMP_HEAD), 0, fp);
    1- b est un pointeur (une variable locale) qui contient l'adresse d'un BITMAP. Passer &b à fread indique de placer le résultat de la lecture à l'emplacement occupé par b (et sa taille est celle d'un pointeur) et non pas à l'adresse contenue dans b.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    fread(b,...
    printf("variables : ....", b.Type, b.Width, b.Height);
    2- b est un pointeur sur structure, pas une structure. On attend b->--- et non pas b.---

Discussions similaires

  1. quel code écrire en cas d'erreur avec "worksheetfunction.vlookup"
    Par lerouxjm dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 19/12/2007, 17h38
  2. Afficher la ligne de code qui est tombée en erreur
    Par CAML dans le forum Framework .NET
    Réponses: 8
    Dernier message: 21/04/2007, 19h42
  3. erreur sur code "windows a renconteré une erreur"
    Par antoine0207 dans le forum Windows
    Réponses: 8
    Dernier message: 29/08/2006, 17h41
  4. Réponses: 2
    Dernier message: 27/04/2006, 15h16

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