Donc normalement, TEXT("hello") et L"hello" devraient être
équivalents. Or, comme le montre l'exemple plus haut, ça ne semble pas
être tout à fait le cas.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Remi THOMAS
"Vincent Hiribarren" écrivit
Donc normalement, TEXT("hello") et L"hello" devraient être équivalents. Or, comme le montre l'exemple plus haut, ça ne semble pas être tout à fait le cas.
-- Rémi THOMAS MVP Visual C++ .NET http://www.pixel-technology.com/rthomas
"Vincent Hiribarren" écrivit
Donc normalement, TEXT("hello") et L"hello" devraient être équivalents.
Or, comme le montre l'exemple plus haut, ça ne semble pas être tout à fait
le cas.
Donc normalement, TEXT("hello") et L"hello" devraient être équivalents. Or, comme le montre l'exemple plus haut, ça ne semble pas être tout à fait le cas.
Très intéressant. Et je comprends mieux l'utilisation des TCHAR que je vois partout. Merci.
Vincent Hiribarren
Thierry wrote:
Vincent Hiribarren écrivait news::
Quelle est donc l'explication ?
A defaut de #define UNICODE c'est la version A(nsi) de OutputDebugString qui est appellée.
Oui, j'avais râté la macro conditionnelle dans le winnt.h. Du coup, j'ai fait varier la macro UNICODE et j'ai obtenu des résultats différents : "hello" a affiché des ?????, et L"hello" s'est affiché correctement.
Cependant, y-a-t'il une explication au fait que L"hello" n'affiche qu'un "h" si je suis en ANSI ? Pourquoi pas une erreur de compilation, par exemple ?
Thierry wrote:
Vincent Hiribarren <vynce@alea.invalid> écrivait
news:1128959411.638328@slbhw0:
Quelle est donc l'explication ?
A defaut de #define UNICODE c'est la version A(nsi) de OutputDebugString
qui est appellée.
Oui, j'avais râté la macro conditionnelle dans le winnt.h. Du coup,
j'ai fait varier la macro UNICODE et j'ai obtenu des résultats
différents : "hello" a affiché des ?????, et L"hello" s'est affiché
correctement.
Cependant, y-a-t'il une explication au fait que L"hello" n'affiche
qu'un "h" si je suis en ANSI ? Pourquoi pas une erreur de compilation,
par exemple ?
A defaut de #define UNICODE c'est la version A(nsi) de OutputDebugString qui est appellée.
Oui, j'avais râté la macro conditionnelle dans le winnt.h. Du coup, j'ai fait varier la macro UNICODE et j'ai obtenu des résultats différents : "hello" a affiché des ?????, et L"hello" s'est affiché correctement.
Cependant, y-a-t'il une explication au fait que L"hello" n'affiche qu'un "h" si je suis en ANSI ? Pourquoi pas une erreur de compilation, par exemple ?
adebaene
Vincent Hiribarren wrote:
Thierry wrote: > Vincent Hiribarren écrivait > news:: > >> Quelle est donc l'explication ? > > A defaut de #define UNICODE c'est la version A(nsi) de OutputDebugString > qui est appellée.
Oui, j'avais râté la macro conditionnelle dans le winnt.h. Du coup, j'ai fait varier la macro UNICODE et j'ai obtenu des résultats différents : "hello" a affiché des ?????, et L"hello" s'est affiché correctement.
Cependant, y-a-t'il une explication au fait que L"hello" n'affiche qu'un "h" si je suis en ANSI ? Pourquoi pas une erreur de compilation, par exemple ?
Cette notion de "être en ANSI" ou "être en Unicode" est un peu artificielle et ne veut pas dire grand chose : tu peux très bien avoir une appli qui manipule les 2 types de texte. Par exemple, j'ai une appli où tout l'IHM est en Unicode (pour l'internationalisation) et où UNICODE est défini, mais entre autre choses cette appli communique par liaison RS avec un périphérique qui "parle" un protocole ASCII : toute cette partie de code manipule bien entendu des char, pas des wchar. Il n'y a pas "d'erreur" détectable par le compilo à manipuler des char dans une appli Unicode ou vice-versa.
Arnaud
Vincent Hiribarren wrote:
Thierry wrote:
> Vincent Hiribarren <vynce@alea.invalid> écrivait
> news:1128959411.638328@slbhw0:
>
>> Quelle est donc l'explication ?
>
> A defaut de #define UNICODE c'est la version A(nsi) de OutputDebugString
> qui est appellée.
Oui, j'avais râté la macro conditionnelle dans le winnt.h. Du coup,
j'ai fait varier la macro UNICODE et j'ai obtenu des résultats
différents : "hello" a affiché des ?????, et L"hello" s'est affiché
correctement.
Cependant, y-a-t'il une explication au fait que L"hello" n'affiche
qu'un "h" si je suis en ANSI ? Pourquoi pas une erreur de compilation,
par exemple ?
Cette notion de "être en ANSI" ou "être en Unicode" est un peu
artificielle et ne veut pas dire grand chose : tu peux très bien avoir
une appli qui manipule les 2 types de texte.
Par exemple, j'ai une appli où tout l'IHM est en Unicode (pour
l'internationalisation) et où UNICODE est défini, mais entre autre
choses cette appli communique par liaison RS avec un périphérique qui
"parle" un protocole ASCII : toute cette partie de code manipule bien
entendu des char, pas des wchar. Il n'y a pas "d'erreur" détectable
par le compilo à manipuler des char dans une appli Unicode ou
vice-versa.
Thierry wrote: > Vincent Hiribarren écrivait > news:: > >> Quelle est donc l'explication ? > > A defaut de #define UNICODE c'est la version A(nsi) de OutputDebugString > qui est appellée.
Oui, j'avais râté la macro conditionnelle dans le winnt.h. Du coup, j'ai fait varier la macro UNICODE et j'ai obtenu des résultats différents : "hello" a affiché des ?????, et L"hello" s'est affiché correctement.
Cependant, y-a-t'il une explication au fait que L"hello" n'affiche qu'un "h" si je suis en ANSI ? Pourquoi pas une erreur de compilation, par exemple ?
Cette notion de "être en ANSI" ou "être en Unicode" est un peu artificielle et ne veut pas dire grand chose : tu peux très bien avoir une appli qui manipule les 2 types de texte. Par exemple, j'ai une appli où tout l'IHM est en Unicode (pour l'internationalisation) et où UNICODE est défini, mais entre autre choses cette appli communique par liaison RS avec un périphérique qui "parle" un protocole ASCII : toute cette partie de code manipule bien entendu des char, pas des wchar. Il n'y a pas "d'erreur" détectable par le compilo à manipuler des char dans une appli Unicode ou vice-versa.
Arnaud
Thierry
Bonjour,
Vincent Hiribarren a écrit :
Cependant, y-a-t'il une explication au fait que L"hello" n'affiche qu'un "h" si je suis en ANSI ?
Comme tu précise L"" ta chaine sera en unicode en mémoire : "h e l l o ".
La version Ansi s'arrete au premier octet nul.
-- « Le travail est probablement ce qu'il y a sur cette terre de plus bas et de plus ignoble. Il n'est pas possible de regarder un travailleur sans maudire ce qui a fait que cet homme travaille, alors qu'il pourrait nager, dormir dans l'herbe ou simplement lire ou faire l'amour avec sa femme. » Boris VIAN
Mon blog RSS : http://yarglah.free.fr/monblog_rss.php <<
Bonjour,
Vincent Hiribarren a écrit :
Cependant, y-a-t'il une explication au fait que L"hello" n'affiche
qu'un "h" si je suis en ANSI ?
Comme tu précise L"" ta chaine sera en unicode en mémoire :
"h e l l o ".
La version Ansi s'arrete au premier octet nul.
--
« Le travail est probablement ce qu'il y a sur cette terre de plus bas et
de plus ignoble. Il n'est pas possible de regarder un travailleur sans
maudire ce qui a fait que cet homme travaille, alors qu'il pourrait nager,
dormir dans l'herbe ou simplement lire ou faire l'amour avec sa femme. »
Boris VIAN
Mon blog RSS : http://yarglah.free.fr/monblog_rss.php <<
Cependant, y-a-t'il une explication au fait que L"hello" n'affiche qu'un "h" si je suis en ANSI ?
Comme tu précise L"" ta chaine sera en unicode en mémoire : "h e l l o ".
La version Ansi s'arrete au premier octet nul.
-- « Le travail est probablement ce qu'il y a sur cette terre de plus bas et de plus ignoble. Il n'est pas possible de regarder un travailleur sans maudire ce qui a fait que cet homme travaille, alors qu'il pourrait nager, dormir dans l'herbe ou simplement lire ou faire l'amour avec sa femme. » Boris VIAN
Mon blog RSS : http://yarglah.free.fr/monblog_rss.php <<
Vincent Hiribarren
Thierry wrote:
Bonjour,
Vincent Hiribarren a écrit :
Cependant, y-a-t'il une explication au fait que L"hello" n'affiche qu'un "h" si je suis en ANSI ?
Comme tu précise L"" ta chaine sera en unicode en mémoire : "h e l l o ".
La version Ansi s'arrete au premier octet nul.
Ah oui. Exactement. Je n'y pensais pas du tout. Du coup je comprends bien mieux toute la gestion de l'unicode en C. Merci.
Thierry wrote:
Bonjour,
Vincent Hiribarren a écrit :
Cependant, y-a-t'il une explication au fait que L"hello" n'affiche
qu'un "h" si je suis en ANSI ?
Comme tu précise L"" ta chaine sera en unicode en mémoire :
"h e l l o ".
La version Ansi s'arrete au premier octet nul.
Ah oui. Exactement. Je n'y pensais pas du tout. Du coup je comprends
bien mieux toute la gestion de l'unicode en C. Merci.