Безопасно ли печатать приведение между UnicodeChar и Integer? - PullRequest
3 голосов
/ 28 октября 2011

В Delphi до 2009 года (земля ANSI) вы могли использовать Ord и Chr для преобразования символа в байт и наоборот. Это было хорошо, например, когда вам нужно было использовать символ как байт:

var
  ch: char;
begin
  ch:= chr(ord(ch1) xor ord(ch2));
end;

Очевидно, что в новых Delphis символы больше не байт, а два. Безопасно ли тогда делать приведение типа:

var
  ch: char;
begin
  ch:= Char(integer(ch1) xor integer(ch2));
end;

чтобы получить те же результаты? Тесты, которые я делал до сих пор, работают нормально, даже когда используются кириллические и арабские символы, но вы никогда не знаете.

1 Ответ

5 голосов
/ 28 октября 2011

Нет необходимости вообще что-либо менять. Продолжайте использовать ord() и chr() точно так же, как и раньше. Они работают точно так же с новым широким типом char. Ваш первый блок кода - все еще идиоматический способ написать это в Unicode Delphi.

Хотя документация для chr() и ord() подразумевает, что эти функции используют Byte в качестве целочисленного типа, не верьте документации. Это неправильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...