J'ai un petit problème avec RAD Studio 2009.
Comme vous le savez, il est possible de désactiver le support Unicode dans MSVS (clic droit sur solution-> properties-> character set = non défini). J'ai besoin de trouver cette fonctionnalité dans RAD Studio, je sais qu'elle existe mais je ne sais pas exactement où.
C'est la seule chose qui arrête mon travail sur un projet universitaire Socket Chat.
P.S. Le problème est apparu après que j'ai installé la mise à jour du site officiel de CodeGear.
Est-il possible de désactiver la prise en charge d'Unicode dans RAD Studio 2009?
Répondre
Réponse courte: Non, il n'y a pas de fonction pour désactiver Unicode dans RAD Studio 2009.
passe résolu le problème de cette façon:
wchar_t* str = Form2->Edit1->Text.w_str();
char* mystr = new char [Form2->Edit1->Text.Length() + 1];
WideCharToMultiByte(CP_ACP, 0, str, -1, mystr, Form2->Edit1->Text.Length() + 1, NULL, NULL);
MessageBox(NULL, mystr, "It`s ok", MB_OK);
delete []mystr;
mais il me semble que s `une autre façon
Est-il possible de l'éteindre? La meilleure question est: devriez-vous l'éteindre? Et la réponse est non. Il est loin de concevoir l'application de manière à ce que les caractères Unicode soient envoyés correctement lors de la sérialisation (par exemple, dans les sockets de votre application), que de concevoir un programme non Unicode dans un monde Unicode. Même pour un projet simple, cela vaut la peine d'apprendre l'Unicode en principe.
Pour être précis, vous pouvez construire votre application C++ Builder sans que l'indicateur #UNICODE soit défini en modifiant les options de projet pour "TCHAR maps to char".
Cela signifie que SendMessage appellera SendMessageA, etc, et le TCHAR
Cependant, si vous utilisez des fonctions VCL, il n'y a pas d'équivalents non-unicode à ceux-ci. La VCL est maintenant héritée Unicode, et cela ne peut pas être changé.
Re: votre "solution" - il y a un moyen plus simple. qui fonctionne aussi bien avec TCHAR = char ou wchar_t:
MessageBox(NULL, Form2->Edit1->Text.t_str(), _TEXT("It`s ok"), MB_OK);
L'utilisation des macros _TEXT et ainsi de suite serait quelque chose à utiliser là-bas, donc si le passage à Unicode est fait, il ne sera pas aussi horrible pour les chaînes explicites. –
Vous avez raison. Merci. – Roddy
Vous devez être prudent en utilisant la méthode UnicodeString :: t_str(). Si vous l'appelez dans un projet compilé pour Ansi plutôt que Unicode, t_str() modifie le contenu interne de UnicodeString. Cela peut avoir des effets secondaires inattendus, en particulier pour les valeurs UnicodeString provenant des contrôles.
Remy, c'est un plaisir de vous voir ici! Bienvenue à StackOverflow.La communauté Delphi ici a juste eu beaucoup plus riche! – Argalatyr
chester - Vous n'avez pas besoin d'appeler WideCharToMultiByte() directement. Laissez le RTL faire le travail pour vous:
AnsiString s = Form2->Edit1->Text;
MessageBoxA(NULL, s.c_str(), "It`s ok", MB_OK);
Il y a une meilleure façon, je le fais comme ceci:
MessageBox(NULL, Form2->Edit1->Text.w_str(), L"It`s ok", MB_OK);
- 1. Prise en charge AJAX dans les téléphones intelligents en 2009
- 2. Delphi 6 avec RAD Studio 2009
- 3. Thèmes Visual Studio avec prise en charge de Resharper?
- 4. Mise en retrait dans Codegear RAD Studio
- 5. Prise en charge de DEVPATH
- 6. Prise en charge de la géométrie PostGIS
- 7. Prise en charge de la bibliothèque Python
- 8. WCF et ASP.NET: Prise en charge de la prise en charge duplex utilisant AJAX
- 9. La prise en charge pour JspWriter
- 10. Prise en charge du langage C++ Visual Studio 2008?
- 11. Prise en charge de RTL PropertyGrid
- 12. Prise en charge de la bibliothèque Javascript Raphael dans NetBeans
- 13. RAD Studio 2011 (?)
- 14. Prise en charge de Rijndael en Java
- 15. Prise en charge STL dans Ruby
- 16. Évaluation de l'expression dans la montre de RAD Studio 2007
- 17. Prise en charge de la sérialisation binaire Silverlight 3.0?
- 18. Prise en charge de la session file_get_contents() en PHP
- 19. Prise en charge de Spring.Net pour Linq2SQL
- 20. Prise en charge d'IMAP IDLE en PHP
- 21. Prise en charge de TDE PostgreSQL
- 22. Prise en charge de la sélection de collection Django?
- 23. Prise en charge de la langue arabe pour une application
- 24. Quand l'édition WYSIWIG de Silverlight XAML dans Visual Studio sera-t-elle prise en charge?
- 25. Prise en charge de plusieurs bases de données dans Symfony
- 26. Que signifie la prise en charge complète de LINQ?
- 27. Prise en charge de la nouvelle version du navigateur
- 28. Prise en charge du presse-papiers dans Silverlight 3
- 29. l'interface ITransactionLocal est pas prise en charge
- 30. Prise en charge de plusieurs domaines dans Forms AUthentication
Peut-être si vous avez posté une question sur « le problème », il pourrait y avoir un solution qui fonctionnerait même avec le support Unicode activé. –
J'ai besoin d'obtenir la chaîne de l'édition.
TMainForm-> IPEdit-> Text.c_str().
Je pense que ça doit être char * return value, mais c'est wchar_t *. J'ai besoin de le convertir en char * pour travailler avec les fonctions de socket. Une idée de comment le faire? – chester89