请帮我,
我知道这听起来可能是一个非常简单的问题,但我就是不知道如何让它发挥作用。我刚开始学习 Unicode,所以请给我一些提示或示例代码。
我正在将旧的编码和解码代码从 Delphi 5 转换为 Delphi XE2。当我调用“Char”函数时,它会产生一个不同的字符,似乎它发生在任何编码集的扩展字符上。
在德尔福 5:
Char(129) -> 将导致空字符
在德尔福 XE2 :
Char(129) -> 将产生 #$81
我尝试在 delphi XE2 上使用 AnsiChar,结果是:
AnsiChar(129) -> 结果为#129
我应该在 delphi XE2 上使用什么代码,所以它也会返回一个空字符。不是#nn 符号?出于向后兼容性的原因,我需要它返回与 Delphi 5 相同的结果。
这与HIGHCHARUNICODE指令有关吗?我也读过并尝试过,但仍然没有运气。
这是我在 Delphi XE2 上尝试的代码,我做了一个简单的代码,但它确实与我的编码/解码代码具有相同的逻辑。代码将获取字符然后将其放入编辑框中。
procedure TForm1.Button1Click;
var
chars : Array[0..2] of AnsiChar;
ansi_string : AnsiString;
begin
chars[0] := AnsiChar(65);
chars[1] := AnsiChar(129);
chars[2] := AnsiChar(66);
ansi_string := chars;
// Here the ansi_string have a value of 'A'#$81'B'
EditBox1.Text := ansi_string;
// Here when i look the EditBox1.text in Evaluate/modify form,
// it shows 'A'#$0081'B'
// but at the form, it only show AB
end;
我怎样才能使 ansi_string 变量的值为 'AB' 而不是 'A'#$81'B'?
提前致谢,