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 :

Problème avec le header <fstream.h>


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 34
    Par défaut Problème avec le header <fstream.h>
    bonjour,
    je viens de modifier mon source et doit utiliser fstream. j'utilise également direct sound et, depuis l'ajout de "'#include<fstream.h>", le compilateur c++ builder4 me trouve une erreur pour strnicmp (impossible de trouver une correspondance de type pour strnicmp....) dans une routine d'analyse du fichier wave.
    comment supprimer cette erreur? et pouvoir inclure fstream
    merci

  2. #2
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    On peut voir le code ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 34
    Par défaut problème strnicmp
    bonjour,
    merci pour ta réponse, l'erreur se produit uniquement si j'ajoute "#include<fstream.h> ; sinon, mon programme fonctionne normalement. Cependant, j'ai besoin d'écrire et de lire sur le disque des fichiers binaires et c'est pourquoi je dois utiliser fstream. peut-être une fonction est déjà définie dans un fichier utilisé par directsound mais lequel?
    cordialement


    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
    bool AnaliserWave (WAVE_INFOS *infos)
    {
    LPBYTE pFin, pFichierWave=NULL;//pointeurs temporaires de début et de fin
    DWORD dwLength,dwSize=NULL;
     
    infos->pEntete = NULL;
    infos->pData = NULL;
    pFichierWave= infos->pDebut;/*pFichierWave pointe sur le début du fichier à
    analyser*/
    if (strnicmp(pFichierWave, "RIFF", 4)!=0)//recherche de la chaine "RIFF"
    //si la chaine "RIFF" n'est pas trouvée
    {
    infos->valable = false;
     return false;
    }

  4. #4
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Attends, tu veux dire que dès que le code compile bien mais dès que tu ajoutes fstream.h, il y a cette erreur ? C'est vraiment presque incroyable. J'aimerai voir le code en entier si possible.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 34
    Par défaut résolu
    bonjour,
    en fait, j'ai résolu en incluant <fstream> mais pas <fstream.h>.
    Je ne sais pas pourquoi, mais maintenant, ça compile et fonctionne.
    il faut dire que ma fonction d'analyse de fichier wave utilisait la fonction Createfile ; ça a peut-être un rapport.
    si tu peux m'expliquer, je t'en remercie

  6. #6
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    fstream.h est un fichier d'en-tête du C++ avant la normalisation (c'est-à-dire avant 1998). Les compilateurs récents n'ont pas de fstream.h, mais de fstream. Je ne connais pas la date d sortie de C++ Builder 4 donc je ne sais pas si c'est fstream.h ou fstream qui s'utilise avec.

    Mais ça n'explique toujours pas l'erreur que tu as rencontré. Si le compilateur ne trouve pas fstream.h, il devrait générer une erreur fatale de type : "fstream.h : fichier introuvable". Au lieu de ça il raconte des trucs incompréhensibles sur strnicmp qui n'a absolument rien à voir ...

    CreateFile n'a elle non plus rien à voir (et en passant, c'est quoi ce code avec des fstreams et des CreateFile, ça fait trop mélange ...). Ce que je peux te dire, c'est que tant qu'on n'aura pas le code en entier sous les yeux, tout ce que nous pourrons faire c'est des spéculations. Mais bon, tu dis que le problème est déjà résolu donc ce n'est peut-être plus nécessaire.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 34
    Par défaut fstream et createfile
    en fait, peut etre n'est-il pas possible d'utilise rla classe fstream avec les fonctions de l'api?

    mon programme lit un fichier wave et recherche la chaine riff pour vérifier qu'il s'agit bien d'un fichier wave. cette fonction est ok et tout fonctionne bien.
    dès que j'ajoute include fstream.h, le compilateur s'arrête en me donnant le message d'erreur "impossible de trouver une correspondance...etc.
    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
    58
    59
    60
    61
    62
    63
    64
    65
    /******************************************************************************/
            /*METHODE DE VERIFICATION ET ANALYSE DE FICHIER WAVE*/
    /******************************************************************************/
    /*analyse du fichier wave reçoit le numéro de la structure wave_info à analyser
    retourne true si les chaines fmt et data ont été trouvées
    structure d'un fichier wave:
    les 4 premiers octets contiennent "riff"
    les 4 octets suivants la taille du fichier
    les 4 octets suivants la chaine "wave"
    */
    bool AnaliserWave (WAVE_INFOS *infos)
    {
        LPBYTE pFin, pFichierWave=NULL;//pointeurs temporaires de début et de fin
        DWORD dwLength,dwSize=NULL;
     
        infos->pEntete = NULL;
        infos->pData = NULL;
        pFichierWave= infos->pDebut;/*pFichierWave pointe sur le début du fichier à
    analyser*/
        if (strnicmp(pFichierWave, "RIFF", 4)!=0)//recherche de la chaine "RIFF"
    //si la chaine "RIFF" n'est pas trouvée
        {
             infos->valable = false;
             return false;
        }
    //les 4 octets suivants contiennet la taille du fichier wave
        dwSize = *(LPDWORD) (pFichierWave+4); //calcul de la taille du fichier wave
        if(strnicmp(pFichierWave+8,"WAVE",4)) //recherche de la chaine "wave" à partir
                            //du début du fichier+8
                            //si la chaine wave n'est pas trouvée
        {
            infos->valable = false;
            return false;
        }
    //les chaines "riff" et "wave" ont été trouvées et la taille du fichier wave
    //est dans la case pointée par dwSize
        pFichierWave+=12;//positionne le pointeur sur fichier sur la chaine "fmt"
        pFin= pFichierWave+dwSize;//positionne le pointeur de fin de fichier
    //recherche de la chaine "fmt", calcul de la longueur du bloc puis "data"
        while (pFichierWave<pFin)
        {
            //calcul de la longueur du bloc de datas du son wave(pfichierwave+16)
            dwLength = *(DWORD*) (pFichierWave+4);
            //recherche de la chaine "fmt" en (pfichierwave+12)
            if (!strnicmp(pFichierWave,"fmt",3))
            //placement du pointeur sur la structure du fichier wave en (pfichierwave+20)
                infos->pEntete =(WAVEFORMATEX *)(pFichierWave+8);
            //recherche du bloc "data" en (pfichierwave+12)
            if (!strnicmp(pFichierWave,"data",4))
            {
                infos->pData = (pFichierWave+8);//les datas commencent en (pfichierwave+20)
                infos->TailleData =dwLength;//ecriture de la taille des datas
            }
            pFichierWave+=dwLength+8;/*pfichierwave pointe sur (pfichierwave + la taille du
                                    bloc soit waveformatex, soit des datas*/
            if(infos->pEntete && infos->pData)
            /*si le pointeur de datas et dentete ne sont plus nuls*/
            {
                infos->valable=true;
                return true;
            }
        }
        infos->valable=false;
        return false;
    }
    tout celà fonctionne si je ne décide pas d'utiliser la classe fstream pour la lecture et l'écriture d'autres fichiers.

    merci

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

Discussions similaires

  1. [CSV] Problème avec les header
    Par Invité dans le forum Langage
    Réponses: 2
    Dernier message: 25/01/2008, 18h53
  2. [MySQL] Connexion à la BDD impossible + problèmes avec mes headers
    Par Terni dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 11/08/2007, 15h31
  3. [préprocesseur g++]probléme avec les headers
    Par Gotmere dans le forum Autres éditeurs
    Réponses: 14
    Dernier message: 22/03/2007, 17h32
  4. problèmes avec un header
    Par tioseb dans le forum Langage
    Réponses: 1
    Dernier message: 04/04/2006, 16h01
  5. Problème avec un HEADER
    Par Zebulonn dans le forum Langage
    Réponses: 4
    Dernier message: 19/10/2005, 13h56

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