Activation des applications C++ pour Unicode

De Appmethod Topics
Aller à : navigation, rechercher

Remonter à Unicode pour C++ - Index


Puisque lachaîne par défaut est Unicode, tout code C++ qui utilise les frameworks et bibliothèques Appmethod doivent être orienté Unicode. Vous pouvez garantir que votre code gère correctement les chaînes étroites et les chaînes étendues en utilisant l'option Mappage TCHAR sur la boîte de dialogue Project > Options > C++ (options partagées).

Remarque : Les nouvelles applications C++ définissent automatiquement l'option mappage _TCHAR sur wchar_t et contiennent un point d'entrée _tmain(...), qui migre vers main. Les applications C++ dont l'option mappage _TCHAR est définie utilisent automatiquement les fonctions flottantes correctes.

Problèmes associés à Unicode pour C++

C++ comporte un ensemble unique de problèmes associés à Unicode que les utilisateurs de Object Pascal ne rencontrent pas. Ces problèmes sont dus au fait que la RTL C++ et l'API Windows sont restreints par défaut tandis que les frameworks et bibliothèques Appmethod utilisent des chaînes Unicode. Certains de ces problèmes sont examinés ici.

Utilisation des frameworks et bibliothèques Appmethod et de la RTL C++

Les frameworks et bibliothèques Appmethod utilisent Unicode, tandis que la RTL C++ est restreinte par défaut mais contient des routines à la fois pour les chaînes étendues et les chaînes restreintes (voir Fonctions flottantes). Ainsi, vous devez utiliser les versions étendues des fonctions de la RTL C++ dans une application qui utilise les frameworks et bibliothèques Appmethod. Pour utiliser la RTL C++ dans une application qui requiert des chaînes étendues), vous devez effectuer les actions suivantes :

  • Définissez Mappage TCHAR sur wchar_t et utilisez _TCHAR dans votre code.
  • Utilisez la version "flottante" des membres de la RTL C++, tels que _tcscpy au lieu de strcpy. Consultez la liste des Fonctions flottantes.

Utilisation de l'API Windows

L'API Windows utilise typiquement les chaînes étroites par défaut. L'option de mappage _TCHAR est d'une aide considérable ici, mais l'option est désactivée (définie sur char) par défaut pour les applications qui n'utilisent pas les frameworks et bibliothèques Appmethod.

Pour utiliser l'API Windows dans une application C++ qui n'utilise pas les frameworks et bibliothèques Appmethod, vous devez définir explicitement l'option Mappage de _TCHAR en sur wchar_t dans la boîte de dialogue Projet > Options > C++ (options partagées).

Passage des constantes chaînes

Les constantes chaînes, telles que "string constant", sont toujours étroites (char*). Vous ne pouvez donc pas les passer aux fonctions des frameworks et bibliothèques Appmethod qui prennent PChar comme vous le faisiez auparavant. Vous pouvez passer la constante aux fonctions des frameworks et bibliothèques Appmethod avec un paramètre PChar si vous préfixez la constante avec L, comme dans

L"string constant"

Cette conversion est automatiquement effectuée quand vous définissez le mappage _TCHAR sur wchar_t et utilisez les macros _TEXT et _T, comme décrit dans Mappage TCHAR.

Définition de la page de code

Vous pouvez définir la page de code pour les types AnsiString avec AnsiStringT<page de code>.

Les mêmes types prédéfinis sont fournis par Object Pascal :

Remarque : L'encodage UTF8 peut être spécifié en utilisant la page de code UTF8 et en encodant les chaînes entre l'API-RTL et les appels aux frameworks et bibliothèques Appmethod. Voir Routines de conversion UTF-8.

Voir aussi