我有自己的带加密功能的D6 pas库。 今天我尝试在XE3下使用它,并且由于unicode我在其中发现了许多错误。 我试图移植到AnsiString,但是我在chr(nnn)上失败了,这在Delphi6下是8位限制。
我正试图解释这个问题:
Str := chr(hchar);
AStr := Str;
Str - string; AStr - ansistring。
当hchar为216(diamater)时,AStr变为“O”,什么是Ascii 79 ... 而且此刻我失去了原来的价值。
Ansi Chr有什么功能吗?例如:“AChr(xxxx)”
或者我需要更改我的代码以不在内部部分使用字符串,只有字节,然后将这些字节转换为AnsiString?
感谢您的任何建议,帮助,信息!
DD
答案 0 :(得分:5)
您可以撰写AnsiChar(SomeOrdinalValue)
来制作具有特定序数的AnsiChar
。所以你的代码应该是:
AStr := AnsiChar(hchar);
问题中的代码问题是您转换为UTF-16并返回。
在我看来,字符串是加密代码的错误类型。使用字节数组TBytes
。