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 :

Unicode en partie


Sujet :

MFC

  1. #1
    Membre �prouv�
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    907
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 907
    Par d�faut Unicode en partie
    Bonjour,

    Peux on faire un programme qui est en partie Unicode ? pas enti�rement ?

    Car quand je met l'option de compilation Unicode; il y a plein d'erreurs ?

    Merci,
    Christophe

  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
    Tu peux utiliser explicitement la version unicode de certaines fonctions, mais il est mieux de passer en Unicode et de corriger toutes les erreurs en rempla�ant les char const *str = "abc" par des TCHAR const *str = TEXT("abc").
    Et n'utiliser les conversions (de pr�f�rences, celles de Visual >= 2005: CA2T, CT2A, etc.) que quand une fonction n'existe que dans un seul des deux charsets.

    Tu peux aussi tenter de passer en TCHAR avant de changer l'option Unicode, mais changer l'option en premier attirera ton attention sur les endroits o� il y a conflit.
    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
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 503
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 503
    Par d�faut
    Oui, mais c'est bien gal�re pour obtenir une solution bancale.
    Avec autant d'effort mais juste avec un peu plus de finesse on devrait rendre le code UNICODE-aware.

    G�n�ralement, remplacer les cha�nes caract�res en dure par l'appel de la MACRO TEXT, remplacer les char* par des PTCHAR et quelques autres manipulations permettent d'assainir rapidement le code.

  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
    Note: Si la macro TEXT() est trop longue � taper, <tchar.h> d�finit la macro _T() qui fait la m�me chose.
    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 �m�rite
    Homme Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    564
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 52
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 564
    Par d�faut
    Je me permet de confirmer les dires de bacelar et Medinoc, en effet il est tout a fait possible de mixer du code UNICODE avec code ANSI. Je d�veloppe actuellement un soft bas� sur les MFC en UNICODE avec la biblioth�que IBPP en ANSI pour acc�der � une base de donn�es Firebird. J'ai un peu modifi� les sources d'IBPP avec l'ajout de quelques macro TEXT et autre conversions avec TCHAR. Ma DAL utilise 2 fonctions pour convertir les CString en std::string et vice versa.
    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
    std::string cs2std(const CString& input)
    {
        if (input.IsEmpty())
            return "";
     
        CT2CA pszString(input);
     
        return std::string(pszString);
    }
     
    CString std2cs(const std::string& input)
    {
        CString strTmp;
     
        if (input.empty())
        {
            strTmp.Empty();
    	return strTmp;
        }
     
        strTmp = input.c_str();
     
        return strTmp;
    }

  6. #6
    Membre �prouv�
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    907
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 907
    Par d�faut
    J'ai toujours des erreurs de Link quand je compile le projet :
    error LNK2001: symbole externe non r�solu "public: static int __stdcall CFile::GetStatus(char const *,struct CFileStatus &)" (?GetStatus@CFile@@SGHPBDAAUCFileStatus@@@Z)
    Pourtant je met bien les bons arguments pour GetStatus :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    	CFileStatus fileInfo;
    	BOOL status = CFile::GetStatus( LPCTSTR(uri), fileInfo );
    J'ai tout essay� mais je trouve pas. Une solution ?

    Merci,
    Christophe

  7. #7
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 503
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 503
    Par d�faut
    Cette signature de CFile::GetStatus date de VS2008, pensez � mettre � niveau au moins votre SDK.

    Le probl�me vient des options de compilation appliqu�es lors de la compilation du fichier cpp correspondant au fichier .obj qui g�n�re l'erreur de link.

    Cet .obj n'aurait jamais du interpr�ter la d�claration de la m�thode comme il semble l'avoir compris, il veut la version ASCII alors qu'il aurait d� vouloir la version UNICODE.

    V�rifiez que la constante de compilation "UNICODE" est bien d�fini lors de la compilation du fichier cpp correspondant.

    Si c'est le cas, utilisez l'option /P (http://msdn.microsoft.com/en-us/library/8z9z0bx6.aspx) pour savoir quel cocktail de constantes de compilation fait que la signature de la m�thode soit mal calcul�.

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

Discussions similaires

  1. [TSplitter] 3 parties...
    Par agh dans le forum Delphi
    R�ponses: 3
    Dernier message: 07/09/2006, 13h11
  2. comment remplacer une partie de texte dans un champs
    Par patlapi dans le forum Paradox
    R�ponses: 4
    Dernier message: 20/11/2003, 14h38
  3. [debutant] unicode
    Par dadou91 dans le forum XML/XSL et SOAP
    R�ponses: 7
    Dernier message: 23/05/2003, 10h12
  4. selectionner une partie d'un TImage
    Par bidochon dans le forum Composants VCL
    R�ponses: 2
    Dernier message: 20/02/2003, 19h08
  5. R�ponses: 3
    Dernier message: 09/02/2003, 01h09

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