-
Добрый день! Не подскажет ли кто, как грамотно работать с UnicodeString? Поясню. Мне нужны integer значения, соответствующие символам ASCII таблицы. Если я использую латинский алфавит, то за меня всё преобразует XE10, то есть var S : string; Work : integer; begin S := ‘Test’; Work := Ord (S [1]); // 1 S := ‘Тест’; Work := Ord (S [1]); // 2 end; В случае 1 Work = $54, то есть, как и требует таблица ASCII для латинского символа T. В случае 2 Work = $0422, вместо ожидаемого по ASCII таблице $92. Как мне получать правильные значения ASCII русских (и других нелатинских) букв при работе с UnicodeString?
-
Конвертировать?
-
А не подскажете ли как?
-
TEncoding
-
> Не подскажет ли кто, как грамотно работать с UnicodeString
В справке все написано.
> В случае 2 Work = $0422, вместо ожидаемого по ASCII таблице > $92
А с чего бы ожидать ? ASCII - это американский стандарт, про русские буквы он ничего не знает.
Используй AnsiString вместо Unicode
-
> JohnKorsh (14.02.17 16:14) > > Как мне получать правильные > значения ASCII русских (и других нелатинских) букв при работе > с UnicodeString?
А зачем это тебе нужно? Только не говори что ты хочешь проверять символы на вхождение в некое множество. В Юникодных версиях Дельфи о множествах символов лучше забыть сразу и навсегда.
-
Мне нужно для совместимости с ранее написанными программами. В итоге написал декодер - если старший байт от Ord (S[i]) равен $40, то таблично дешифрирую в старую WIn кодировку ASCII.
-
Не $40, а $04. Извините, поспешил.
-
> В итоге написал декодер - если старший байт от Ord (S[i]) > равен $40, то таблично дешифрирую в старую WIn кодировку > ASCII.
Кулибин. WideCharToMultibyte
|