При приведении строки к типу UTF8String ошибки возникают после символьных констант.
В скрипте приведена часть возможных ошибок, причем наличие/отсутствие ошибки связано с размером константы (один или более символов)
и её местом (начало и внутри строки).
Средство от ошибок - явное приведение типа константы функцией UTF8Encode().
Переменная sTest: описание - "Описание переменной", единица измерения - "Единица измерения", начальное значение - "Это строка".
begin
// в примере строка приводится к типу UTF8String выводимый текст
// строка начинается с односимвольной константы
Text1.Text := 'Ё' + sTest.Description; // ЁРћРїРёСЃР°РЅРёРµ переменной
// строка начинается с многосимвольной константы
Text2.Text := 'ЁЁЁ' + sTest.Description; // ЁЁЁОписание переменной
// ЯВНОЕ ПРИВЕДЕНИЕ ТИПА
Text3.Text := UTF8Encode('Ё') + sTest.Description; // ЁОписание переменной
// константа завершает строку типа String
Text4.Text := sTest.AsStr + ' Кракозябра'; // Это строка Кракозябра
// односимвольная константа внутри строки
Text5.Text := sTest.Description + '%' + sTest.Units; // Описание переменной%Единица измерения
// многосимвольная константа внутри строки
Text6.Text := sTest.Description + '% ]' + sTest.Units; // Описание переменной% ]Единица измерения
// переменная как String
Text7.Text := sTest.Description + ' = ' + sTest.AsStr; // Описание переменной = Это строка
// переменная как UTF8string
Text8.Text := sTest.Description + ' = ' + sTest.AsUTF8String; // Описание переменной = Рто строка
end.