Accueil > Forum > > > > Informations Media
Informations Media
lundi 21 février 2005 à 16:05:50 |
Informations Media

simtiers
|
Salut !
Je suis en train de faire un mini lecteur avec FMOD, sous Windows.
Dans ma classe CLecteur, interface
avec FMOD, je récupère les tags avec FSOUND_Stream_GetTagField, masi
j'ai une erreur 0x0005 qui apparait (violation d'accés)
Voici le code :
bool CLecteur::Recuperation_Informations( INFORMATIONS_PISTE* Infos )
{
int NbChamps = 0;
if( !FSOUND_Stream_GetNumTagFields( Son, &NbChamps ) )
return false;
if( NbChamps == 0 )
return false;
char *Nom_Champ;
int type_tag = 0;
int len = 0;
void* Val_Champ;
memset( &Infos, 0, sizeof(INFORMATIONS_PISTE) );
for( int i=0; i<NbChamps; i++ )
{
FSOUND_Stream_GetTagField(
Son, i, &type_tag, &Nom_Champ, &Val_Champ, &len );
MessageBoxA( NULL, (char*)Val_Champ, "Val Champ", 0 );
// Titre
if( !strcmp(Nom_Champ,"TITLE") )
strncpy( Infos->Titre, (char*)Val_Champ, len );
// Album
if( !strcmp(Nom_Champ,"ALBUM") )
strncpy( Infos->Album, (char*)Val_Champ, len );
// Artiste
if( !strcmp(Nom_Champ,"ARTIST") )
strncpy( Infos->Artiste, (char*)Val_Champ, len );
// Année
if( !strcmp(Nom_Champ,"YEAR") )
strncpy( Infos->Annee, (char*)Val_Champ, len );
// Commentaire
if( !strcmp(Nom_Champ,"COMMENT") )
strncpy( Infos->Commentaires, (char*)Val_Champ, len );
}
return true:
}
La structure d'infos :
struct INFORMATIONS_PISTE
{
char Album[50];
char Artiste[50];
char Titre[50];
char Commentaires[100];
char Annee[5];
char Piste[5];
char Duree[10];
};
J'ai vérifié, le void* Val_Champ renvoie une chaine de caractère
(toujours), mais je ne peux pas utiliser directement char* Val_Champ,
je ne sais pas comment faire
Merci de répondre !
|
|
lundi 21 février 2005 à 19:33:44 |
Re : Informations Media

AlexMAN
|
Il faut allouer de la memoire !!!! De facon dynamique (malloc) ou pas ! Declare en char*, et caste quand il le faut.
FSOUND_Stream_GetTagField( Son, i, &type_tag, &Nom_Champ, &Val_Champ, &len );
Pour passer Val_Champ en parametre, tu fais soit &Val_champ[0], ou bien Val_champ tout court. Idem pour les autres variables (je parle des tableaux.)
+2(p - n)
|
|
lundi 21 février 2005 à 20:06:36 |
Re : Informations Media

simtiers
|
J'ai essayé de faire un cast; mais j'obtiens toujours la même erreur, en faisant comme ça :
char *Nom_Champ;
char *Val_Champ;
int type_tag = 0;
int len = 0;
memset( &Infos, 0, sizeof(INFORMATIONS_PISTE) );
for( int i=0; i<NbChamps; i++ )
{
FSOUND_Stream_GetTagField( Son, i, &type_tag, &Nom_Champ, (void**)&Val_Champ, &len );
...
}
...
Il ne faut pas allouer la memoire, voici le contenu de l'aide la fonction :
signed char F_API
FSOUND_Stream_GetTagField( FSOUND_STREAM
*stream, int num, int
*type, char **name, void
**value, int *length );
Parameters
| stream |
The stream to get the tag field from.
|
| num |
The number of the tag field to retrieve.
|
| type |
Pointer to a variable that will receive the type of the tag field that was
retrieved. See FSOUND_TAGFIELD_TYPE.
|
| name |
Pointer to a variable that will receive the name of the tag field as a
null-terminated ASCII string.
|
| value |
Pointer to a variable that will receive a pointer to the tag field
data.
|
| length |
Pointer to a variable that will receive the length of the tag field
data.
|
Do not attempt to modify or free any pointers returned by this function
If this function returns successfully, "value" will contain a pointer to a piece
of tag-field-specific data - do not assume it will always point to a
null-terminated ASCII string.
|
|
lundi 21 février 2005 à 20:29:09 |
Re : Informations Media

simtiers
|
Comme ça non plus, ça ne marche pas :
char *Nom_Champ;
void *Val_Champ;
int type_tag;
int len;
Buffer = new char[2048];
memset( &Infos, 0, sizeof(INFORMATIONS_PISTE) );
for( int i=0; i<NbChamps; i++ )
{
FSOUND_Stream_GetTagField(
Son, i, &type_tag, &Nom_Champ, &Val_Champ, &len );
sprintf( Buffer, "%s", Val_Champ );
//MessageBoxA( NULL, (char*)Val_Champ, "Val Champ", 0 );
// Titre
if( !strcmp(Nom_Champ,"TITLE") )
strncpy( Infos->Titre, (char*)Buffer, len );
......
Buffer étant une variable globale.
|
|
lundi 21 février 2005 à 20:34:20 |
Re : Informations Media

simtiers
|
JE VIENS D'IDENTIFIER L'ERREUR !!! 
ça viens de Infos->Titre et tout ce qui est Infos->, je ne sais pas pourquoi...
|
|
lundi 21 février 2005 à 20:43:31 |
Re : Informations Media

simtiers
|
Réponse acceptée !
Ca y est, j'ai trouvé !
C'était un pb avec les allocations successives (je pense) et le passage du pointeur sur Retour_Infos en argument
Pour ceux que ça interesse :
bool CLecteur::Recuperation_Informations( INFORMATIONS_PISTE* Retour_Infos )
{
int NbChamps;
char *Nom_Champ;
void *Val_Champ;
int type_tag;
int len;
char Tampon[512];
INFORMATIONS_PISTE Infos;
if( !FSOUND_Stream_GetNumTagFields( Son, &NbChamps ) )
return false;
if( NbChamps == 0 )
return false;
memset( &Infos, 0, sizeof(INFORMATIONS_PISTE) );
for( int i=0; i<NbChamps; i++ )
{
FSOUND_Stream_GetTagField(
Son, i, &type_tag, &Nom_Champ, &Val_Champ, &len );
//MessageBoxA( NULL, (char*)Nom_Champ, "Nom Champ", 0 );
// Titre
if( !strcmp(Nom_Champ,"TITLE") )
strncpy( Infos.Titre, (char*)Val_Champ, len );
// Album
else if( !strcmp(Nom_Champ,"ALBUM") )
strncpy( Infos.Album, (char*)Val_Champ, len );
// Artiste
else if( !strcmp(Nom_Champ,"ARTIST") )
strncpy( Infos.Artiste, (char*)Val_Champ, len );
// Année
else if( !strcmp(Nom_Champ,"YEAR") )
strncpy( Infos.Annee, (char*)Val_Champ, len );
// Commentaire
else if( !strcmp(Nom_Champ,"COMMENT") )
strncpy( Infos.Commentaires, (char*)Val_Champ, len );
/*else
continue;*/
//MessageBoxA( NULL, Tampon, "Val Champ", 0 );
}
memcpy( Retour_Infos, &Infos, sizeof(Infos) );
return true;
}
|
|
Cette discussion est classée dans : champ, infos, char, val, len
Répondre à ce message
Sujets en rapport avec ce message
conversion char to TBint32 [ par gab55 ]
Bonjour a tous je suis débutant en c++ et j'utilise une fonction qui lit des données dans un fichier texte mon probleme est que les données contenues
Char* capricieux.... [ par Clonk ]
Bonjour,alors voilà, j'ai une classe "Champ" avec les attributs suivant :private: char * _nomchamp; char * _explication; char * _type; char * _format;
Fonction substr en C [ par julien_boss ]
Bonjour,j'ai codé cette fonction, sensée être l'équivalent de string::substr(...) en C :char * StrSub(const char *s, int pos, int len){ char *ps =
Pb de compilation (error C2593: 'operator <<' est ambigu) [ par nanou_26 ]
J'obtient une erreur de compilation "error C2593: 'operator T m_va
Arbre Lexicographique [ par LordBob ]
Bonjour a tous,voila en fait j'ai un exercice d'algorithmique ou je dois créé un arbre l'exicographique, voici la structure de ma classe:class ArbreLe
fonction qui crash à retardement [ par clad67150 ]
Bonjour à tous !Je viens poster parce que j'ai un petit problème, j'essaye de faire une fonction de debug qui marche comme un printf() et qui affiche
Url encoding [ par Lestat_2070 ]
Bonjour à tous,Tout d'abord, j'espère que je ne me trompes pas de section, pour ce sujet. Ensuite, j'essaye de faire une fonction comparable à la fonc
votre avis sur une fonction de split... [ par Matt67 ]
Bonsoir,Je dois faire une fonction de "splitage" de chaine. J'ai realisé ce bout de code et j'aimerais votre avis. La fonction n'est pas tout a fait f
Lecture d'un fichier avec decoupe de chaine. [ par macbang ]
Bonjour, je reviens vers vous pour un problème que j'ai du mal a résoudre.Mon programme ouvre un fichier, le but étant de découper ligne par ligne pou
[C++] Violation d'accès lors de la lecture de l'emplacement 0xfdfdfdfd. [ par 3Fred9 ]
Bonjour, J'ai changé de compilateur de Visual C++ 6 à Visual Studio 2005 et depuis j'ai une fonction qui plante à l'exécution par une violation d'acc
Livres en rapport
|
Derniers Blogs
JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|