Delphi XE3:Chr Ansi版本?

dur*_*ara 3 delphi unicode ansi chr delphi-xe3

我有自己的带加密功能的D6 pas库.今天我尝试在XE3下使用它,并且由于unicode我在其中发现了许多错误.我试图移植到AnsiString,但是我在chr(nnn)上失败了,这在Delphi6下是8位限制.

我试图解释这个问题:

    Str := chr(hchar);
    AStr := Str;
Run Code Online (Sandbox Code Playgroud)

Str - string; AStr - ansistring.

当hchar为216(diamater)时,AStr变为"O",Ascii 79是什么......此时我失去了原始值.

Ansi Chr有什么功能吗?例如:"AChr(xxxx)"

或者我需要更改我的代码以不在内部部分使用字符串,只有字节,然后将这些字节转换为AnsiString?

感谢您的任何建议,帮助,信息!

DD

Dav*_*nan 5

你可以写AnsiChar(SomeOrdinalValue)做一个AnsiChar具有特定顺序.所以你的代码应该是:

AStr := AnsiChar(hchar);
Run Code Online (Sandbox Code Playgroud)

问题中的代码问题是您转换为UTF-16并返回.

在我看来,字符串是加密代码的错误类型.使用字节数组TBytes.