Delphi2010:编写代码以分配包含Unicode文字值的Caption或从文本文件加载unicode符号?

前端之家收集整理的这篇文章主要介绍了Delphi2010:编写代码以分配包含Unicode文字值的Caption或从文本文件加载unicode符号?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
请告诉我如何在Delphi 2010中制作Unicode程序.

我有英文Windows和“非Unicode程序的当前语言”也是英文.静态控件看起来不错,但是如果我尝试更改它们(Label.Caption:=’unicode value’或Memo.LoadFromFile(textFilename)),则文本看起来像:$^ $&%*(#&#.

如何解决

非常感谢!

解决方法

欢迎来到StackOverflow.当你有这样的问题时,请发贴你的代码.我将会解释最可能的问题来源,就像您看到的那样,但是如果您不发布代码,我无法帮助您解决问题.此外,我必须做出很多假设,因为你已经要求我几乎猜测你的问题,这就是为什么它被关闭.希望未来能给予更多的细节,我们可以避免闭门会议的问题.

让我假设一堆事情,因为你没有给我很多数据继续下去.

>你以前使用过Delphi,你知道String,Char等基本类型名称.
>您可能不知道Delphi 2007(char = Ansichar / string = Ansistring)和Delphi 2009-or-later(包括Delphi 2010和XE)之间的Unicode差异,其中Char = UnicodeChar和String = UnicodeString.
>最常见的原因,您会看到垃圾(在您的问题中表示为文本看起来像$^ $&%*(#&#.“)是如果您尝试直接操作字节大小的AnsiCharacter数据并强制它以错误的方式进入UnicodeString.
> MJN也注意到,从你的一个意见中你也遇到了源代码,包含没有保存为UTF8文件的unicode字符的问题…当我尝试将Unicode字符放入源文件时,Delphi会自动向我询问问题,我认为你也看到,并正确回答(正确的答案是肯定的)…但是你的问题根本没有提到,你真的应该尝试更新你的问题来指定问题的根源.

这里是右键单击文件格式菜单,您可以随时更改编码,建议的值为UTF8,如下所示:

您应该发布生成不正确字符串值的受影响的代码.你应该开始,而不是一个巨大的应用程序,你试图移植到Unicode Delphi(这是我在这里做的第四个也是最大的假设),而是从一些小的示例代码开始.

这里是一个“错误代码”的例子,这恰恰在Delphi 7中工作,因为每个字符的大小都是一个字节,但是这个假设不会向上移动到2009年,而XE Delphi:

procedure Tform1.TestBad;
var
 x:PAnsiChar;
 s:String;
begin
  x := 'test';
  s := Copy(PChar(x),1,10);
  Self.Caption := s;
end;

这里是相同的设计的示例代码“固定的”(更像是非故意破解),所以它至少在delphi XE中工作:

procedure Tform1.TestLessBad;
var
 x:PAnsiChar;
 s:String;
begin
  x := 'test';
  s := Copy(x,10);
  Self.Caption := s;
end;

使用上面的指针是有创造力的,不必要的,除了我试图用这个例子教导.

第一个例子将在表单的标题中创建unicode汉字,而不是显示文本’test’,因为2个字节已经变成单个字符,因为我有意地做了一些BAD来显示一个简单的方式来产生你所说的噪音的,通过在我的代码中犯错误.

如果您遇到特定unicode代码点的麻烦,请让我建议您尝试这种符号:

c := Char($21CC);  // this is U+21CC (cool two arrows thingy used in chemistry to indicate a reversible reaction)

或者你会看到这一点,这几乎是一回事:

c := #$21CC; // U+21CC

注意你不需要一个UTF8编码的文件来存储你这样写的东西.

猜你在找的Delphi相关文章