我在RAD Studio 2009中遇到了一些問題。
如您所知,可以在MSVS中右鍵切換Unicode支持(右鍵單擊solution-> properties-> character set = not set)。我需要在RAD Studio中找到這個功能,我知道它存在但不知道究竟在哪裏。
這是唯一停止我在Socket Chat大學項目上的工作。
P.S.從CodeGear官方網站安裝更新後出現問題。
是否可以關閉RAD Studio 2009中的Unicode支持?
回答
簡短的回答:沒有,沒有這樣的功能關閉的Unicode在RAD Studio 2009.
I`ve解決的問題是這樣的:
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;
,但在我看來,可以去看另一種方式
是否可以關閉它?更好的問題是:你應該關掉它嗎?答案是:NO。
設計應用程序的目的很遠,以便在序列化(例如,在應用程序的套接字中)時正確發送Unicode字符,而不是在Unicode世界中設計非Unicode程序。即使是一個簡單的項目,原則上也值得學習Unicode。
準確地說,您可以通過修改「TCHAR maps to char」的項目選項來定義您的C++ Builder應用程序,而不需要定義#UNICODE標誌。
這意味着,SendMessage函數將調用SendMessageA等,以及TCHAR
但是,如果你使用任何VCL功能,不存在非Unicode等同於那些。現在VCL繼承Unicode,並且不能改變。
Re:你的「解決方案」 - 有一個更簡單的方法。這既TCHAR = char或wchar_t的工作原理:
MessageBox(NULL, Form2->Edit1->Text.t_str(), _TEXT("It`s ok"), MB_OK);
_TEXT宏等的使用可以在那裏使用,所以如果移動到Unicode,它不會像顯式字符串那樣可怕。 – 2009-01-13 15:20:57
您可以選擇使用的UnicodeString :: t_str()方法要小心。如果您在爲Ansi而不是Unicode編譯的項目中調用它,則t_str()將更改UnicodeString的內部內容。這可能會產生意想不到的副作用,特別是對於來自控件的UnicodeString值。
切斯特 - 你不需要直接調用WideCharToMultiByte()。讓RTL做的工作適合你:
AnsiString s = Form2->Edit1->Text;
MessageBoxA(NULL, s.c_str(), "It`s ok", MB_OK);
有一個更好的辦法,我不喜歡這樣寫道:
MessageBox(NULL, Form2->Edit1->Text.w_str(), L"It`s ok", MB_OK);
- 1. Embarcadero RAD Studio/FireMonkey是否支持XCode 5?
- 2. Visual Studio中的Xaml 2009支持
- 3. V8是否支持Unicode?
- 4. Splice是否支持Unicode?
- 5. TRichEdit是否支持Unicode?
- 6. TReader/TWriter是否支持unicode?
- 7. Lua是否支持Unicode?
- 8. C++ Builder 2009是否支持Git?
- 9. HTML5是否支持密碼中的Unicode?
- 10. Visual Studio 2012支持XAML 2009嗎?
- 11. IOS是否支持所有的Unicode emojies?
- 12. 德爾福6與RAD Studio 2009一起
- 13. RAD Studio 2009持久選擇問題:Bug或功能?
- 14. Android Studio是否支持Maven?
- 15. 是否可以StringTemplate支持可重用
- 16. 是否可以刪除Delphi Rad studio 10的路徑變量
- 17. RAD 7.5支持JDK8.0
- 18. 標準ML是否支持Unicode?
- 19. Android Studio(Intellij)不完整的Unicode支持?
- 20. 是否可以關閉glibc端的vdso?
- 21. 窗戶是否可以關閉?
- 22. 德爾福2009年和突觸 - 測試和準備Unicode支持?
- 23. websocket是否可以支持gzip壓縮?
- 24. InstallShield2009 Unicode支持
- 25. firedac中的RAD Studio不可
- 26. 是否可以支持iPad1而不支持iPhone3GS?
- 27. 即使瀏覽器關閉後,是否可以保持會話?
- 28. 是否可以關閉主SWF窗口?
- 29. C#是否可以關閉該進程?
- 30. 是否可以在不關閉流的情況下關閉Reader?
或許,如果你發佈了關於「問題」的問題,有可能是一個解決方案即使在開啓unicode支持的情況下也能正常工作。 – 2008-12-17 20:50:55
我需要從編輯中獲取字符串。
TMainForm-> IPEdit-> Text.c_str()。
我認爲它必須是char *返回值,但它是wchar_t *。我需要將其轉換爲char *以使用套接字函數。任何想法如何做到這一點? – chester89 2008-12-17 20:58:10