Я хочу отобразить ????
(U + 1F4CD - круглая канцелярская кнопка) в TLabel
caption (lblLocation
) отображается что-то вроде: "???? Pretoria, South Africa"
, но вместо этого я продолжаю получать странные вещи, похожие на блоки.
Я пробовал вставить символ прямо в исходный код, но это также приводит к странной блочной вещи (мой исходный код закодирован в UTF-8).
Перед вставкой ????
:
Сразу после вставки ????
:
Я также пробовал использовать ConvertFromUtf32()
согласно Как преобразовать кодовую точку Unicode, такую как U + 1F4DB, в char?.
lblLocation.Caption := lblLocation.Caption + ConvertFromUtf32(StrToInt('$1F4CD'));
Выполнение приведенного выше кода дает следующее в заголовке TLabel
:
lbLocation.Caption + #$1F4CD
в порядке. - person Sertac Akyuz   schedule 29.09.2019ConvertFromUtf32(StrToInt('$1F4CD'))
- вам не нужноStrToInt()
, вместо этого можно использовать целочисленный шестнадцатеричный литерал:lbLocation.Caption := ConvertFromUtf32($1F4CD) + ' Pretoria, South Africa';
Или просто используйте символьные литералы UTF-16:lbLocation.Caption := #$D83D#$DCCD' Pretoria, South Africa';
- person Remy Lebeau   schedule 29.09.2019Length(#$1F4CD)
возвращает 2, задание в моем комментарии работает. - person Sertac Akyuz   schedule 29.09.2019#$1F4CD
не работает. Хотя использование шестнадцатеричных значений ›4 цифры недокументировано. До 4 цифр документируется как 1WideChar
, не упоминается ›4 цифры, дающие 2WideChar
. Если это сработает - отлично. Возможно, это новая функция, я уверен, что она не всегда работала в ранних версиях Delphi с поддержкой Unicode. - person Remy Lebeau   schedule 29.09.2019