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

MFC Discussion :

Probl�me de codage


Sujet :

MFC

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Inscrit en
    Octobre 2006
    Messages
    53
    D�tails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 53
    Par d�faut Probl�me de codage
    Bonjour tout le monde,

    Je suis en train de d�velopper un lecteur audio avec les MFC, VS2005 et FMODEx. Et je rencontre un ptit soucis l�.
    En fait, tout marche bien l�, mais quand j'essaie d'ouvrir une chanson o� ds son nom de fichier (ou le dossier contenant) il y a des caract�res chinois par exemple, �a ne r�ussit pas � ouvrir la chanson en fait.
    Dans mon appli, je ne travaille qu'avec des CString, mais FMODEx pour charger une chanson a besoin que je lui donne l'adresse du fichier avec un char*.
    Le soucis vient de l�, je pense, je voudrais savoir comment faire pour que je puisse convertir sans soucis mon CString en char*.

    Merci d'avance

  2. #2
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    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 397
    Par d�faut
    En fait, j'ai peur que ce soit peine perdue.
    La conversion unicode -> b�te char* se fait forc�ment avec perte potentielle, puisqu'il y a 2^20 caract�res unicode et seulement 256 caract�res pour des char*.

    Sauf en UTF-8 bien s�r, mais je serais �tonn� que FMOD supporte les chemins de fichier en UTF-8, car Windows en g�n�ral ne supporte par vraiment l'UTF-8...
    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�
    Inscrit en
    Octobre 2006
    Messages
    53
    D�tails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 53
    Par d�faut
    Si, apparemment, je viens de trouver, il y a la constante "FMOD_UNICODE" qui permet de pr�ciser � FMOD que le nom du fichier utilise est en unicode. C'est �crit dans la description de la constante : "Filename is double byte unicode."

    Sauf que si je mets directement cette constante l�, �a marche plus du tout, mon appli ne peut m�me pu ouvrir un seul fichier.
    Perso je pense que �a doit vraiment �tre pas bon ma conversion, je trouve �a un peu p�rilleux ^^ :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    CString current_file;
    std::string str(CT2CA((LPCTSTR)(current_file)));
    FMOD_System_CreateStream(sys, str.c_str(), FMOD_UNICODE | FMOD_HARDWARE | FMOD_LOOP_OFF | FMOD_2D, 0, &sound);

  4. #4
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    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 397
    Par d�faut
    Il faut utiliser une wstring et la macro/classe de conversion doit finir par W et non A.


    Ou bien, si tu as un Visual assez r�cent, tu peux juste utiliser une CStringW :
    Code C++ : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    CStringW current_file = ...;
    FMOD_System_CreateStream(sys, current_file, FMOD_UNICODE | FMOD_HARDWARE | FMOD_LOOP_OFF | FMOD_2D, 0, &sound);
    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.

  5. #5
    Membre confirm�
    Inscrit en
    Octobre 2006
    Messages
    53
    D�tails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 53
    Par d�faut
    J'ai trouv� la solution en fait, c'est m�me plus simple que �a

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    CString filename = ...;
    FMOD_System_CreateStream(sys, (char*)filename.GetString(), FMOD_UNICODE | FMOD_HARDWARE | FMOD_LOOP_OFF | FMOD_2D, 0, &sound);
    Merci de ton aide M�dinoc

  6. #6
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    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 397
    Par d�faut
    Ah non, �a c'est tr�s mauvais.
    D'une part tu vires le const, mais en plus tu castes � l'aveuglette.
    Utilise une CStringW et un reinterpret_cast< const char * >.
    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.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Probl�me de codage en HTML
    Par liazidf dans le forum Balisage (X)HTML et validation W3C
    R�ponses: 6
    Dernier message: 23/01/2007, 14h11
  2. Probl�me de codage
    Par bilowlex dans le forum AWT/Swing
    R�ponses: 8
    Dernier message: 12/12/2006, 16h40
  3. Probl�me de codage de caract�res depuis l'import
    Par compu dans le forum SQL Proc�dural
    R�ponses: 1
    Dernier message: 22/03/2006, 08h37
  4. R�ponses: 9
    Dernier message: 04/03/2005, 13h58
  5. [Accents - XML] Probl�me de codage non support� !!
    Par Smortex dans le forum Composants VCL
    R�ponses: 6
    Dernier message: 24/11/2002, 11h00

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