TCHAR & TEXT

Résolu
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 - 18 août 2006 à 19:07
 Utilisateur anonyme - 19 août 2006 à 16:58
Yop,

Bon j'ai pris une grande respiration et j'ai commencé la lecture (traduction) du livre de petzold et j'ai enfin trouvé des information sur TCHAR et TEXT que je croisai svt dans les source. Cependant cela reste un peut flou. En résumé , TCHAR et TEXT sont des macro qui gère automatiquement soit le ascii ou l'unicode c'est cela en gros ?

Merci d'avance.

8 réponses

racpp Messages postés 1910 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 15
18 août 2006 à 19:21
Salut,
Oui c'est  ça. TCHAR devient char dans le mode ANSI et devient WCHAR en Unicode.
TEXT permet de considérer une chaine en ANSI ou Unicode selon le cas.

Le but de tout cela est de permettre d'utiliser le même code source pour les deux cas.
1
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
18 août 2006 à 19:48
Merci racpp, hey tu es admin now ;)
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
18 août 2006 à 20:11
Encore un question , si on fait :

printf("\n %s",TEXT("yop"));

Cela ne sert a rien car si c'est mode ansi , cava mais si c'est unicode , certe TEXT traite le text en unicode mais il ne s'affichera pas car c'est la fonction printf qui est employée et pas wprintf :s
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 4
18 août 2006 à 20:46
Salut,

printf c'est une fonction ansi, donc elle attend une chaine ansi.

wprintf c'est la version unicode de printf, et _tprintf c'est la macro
qui sera remplacée par printf ou wprintf selon les #define.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
racpp Messages postés 1910 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 15
18 août 2006 à 20:51
Toutes les fonctions API Windows ayant comme paramètre des pointeurs sur chaines de caractères, existent en deux versions. Une pour ANSI et l'autre pour Unicode. Exemple:
MessageBox() -> MessageBoxA() et MessageBoxW(). Le compilateur choisit celle qui convient selon que le mode Unicode est défini ou non. D'autres librairies proposent une fonction distincte pour chaque mode. Un fichier header permet au compilateur de choisir la fonction convenable pour chaque mode. Malheureusement, ce n'est pas toujours le cas.
0
Utilisateur anonyme
18 août 2006 à 22:02
printf c'est un fonction OEM ascii étandu OEM et non ainsi je crois
parceque faite:
printf("é"); ca va vous afficher un "ù" !!!

et si vous faites:
char chaine[10]="é";
OemToChar(chaine, chaine);
printf("%s", chaine);
la on va voir le "é" dans la console dos

deck_bsd oui avec visual c++ quand tu choisi le mode unicode regarde dans l'appel du compilateur ca déclare la constante UNICODE comme cela: 
/D "_UNICODE"  c'est comme si tu metté avant l'header windows #define UNICODE et en fonctionde cela il va faire par exemple:
#ifdef UNICODE
#define DeleteFile DeleteFileW
#else
#define DeleteFile DeleteFileA



MaLaDeDeDe 97one 
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
19 août 2006 à 11:35
oui donc en clair j'avai vu juste . pour une total portabilité le bon code serai :

_tprintf("\n %s",TEXT("yop"));

:D
0
Utilisateur anonyme
19 août 2006 à 16:58
J'était du meme avis que toi mais j'ai testé: _tprintf(TEXT(
"\n %s"),TEXT(
"yopé"));

ou _tprintf(L"
\n %s"),L
"yopé"); car c'est la meme chose... et la console m'a écrit un gros ù malgré le fait que l'on soir en unicode je comprend plus rien la.

sinon je l'ai appris cette semaine sur le forum ca TEXT("yop lol"); et L"yop lol"; c'est pareil pour qu'une chaine soir unicode.
MaLaDeDeDe 97one 
0
Rejoignez-nous