簡體   English   中英

在字符串中添加角度符號

[英]Add angle symbol to string

如何在字符串中添加角度符號以放入TMemo

我可以根據擴展的ascii表中的八進制值輕松添加度符號:

String deg = "\272";  // 272 is octal value in ascii code table for degree symbol
Form1->Memo1->Lines->Add("My angle = 90" + deg);

但是,如果嘗試對角符號( \∠ )使用轉義序列, \∠出現編譯器錯誤, W8114 Character represented by universal-character-name \∠ cannot be represented in the current ansi locale

UnicodeString deg = "\u2220";
Form1->Memo1->Lines->Add("My angle = 90" + deg);

為了清楚起見,下面是我所追求的符號。 如果可以的話,我也可以使用@ ,只是想知道是否有可能不咬牙。 我的測試目標是Win32,但我希望它也能在iOS和Android上運行。

在此處輸入圖片說明

ps 此表便於查看代碼。

遵循Rob的回答后,我已經開始使用它,但是在iOS上,其他文本的角度向下偏移到水平線以下。 在Win32上,它很小。 在Android上看起來不錯。 我將作為錯誤報告給Embarcadero,盡管較小。

結果

android結果

這是我根據Rob的評論使用的代碼:

UnicodeString szDeg;
UnicodeString szAng;
szAng.SetLength(1);
szDeg.SetLength(1);
*(szAng.c_str()) = 0x2220;
*(szDeg.c_str()) = 0x00BA;
Form1->Memo1->Lines->Add("1: " + FormatFloat("##,###0.0",myPhasors.M1)+ szAng + FormatFloat("###0.0",myPhasors.A1) + szDeg);

這是將TMemo字體顯式設置為Courier New時的外觀:

將字體設置為Courier New之后

這是雷米答復后我使用的最終代碼:

UnicodeString szAng = _D("\u2220");         
UnicodeString szDeg = _D("\u00BA");
Form1->Memo1->Lines->Add("1: " + FormatFloat("##,###0.0",myPhasors.M1)+ szAng + FormatFloat("###0.0",myPhasors.A1) + szDeg);

編譯器錯誤是因為您使用的是窄ANSI字符串文字,並且\∠不適合char 請改用Unicode字符串文字:

UnicodeString deg = _D("\u2220");

RTL的_D()宏使用Lu前綴為文字加上前綴,具體取決於UnicodeString使用wchar_t (僅限Windows)還是char16_t (其他平台)為其字符數據。

該錯誤指示某種代碼范圍故障,您應該能夠避免這種情況。 嘗試直接設置字符代碼:

UnicodeString  szDeg;
UnicodeString  szMessage;

  szDeg.SetLength(1);
  *(szDeg.c_str())=0x2022;

  szMessage=UnicodeString(L"My angle = 90 ")+szDeg;
  Form1->Memo1->Lines->Add(szMessage);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM