繁体   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