kazalex писал(а):При сложении строк одного типа потеря данные невозможна по определению.
В том случае, если данные перед сложением не конвертируются.
Неверное предположение. Компилятор принимает решение о конвертировании исходя из информации о типе строк.
Верное. Потому что компилятор правит алгоритм программы. А вдруг программа должна складывать в ansistring строки в разных, в том числе в несуществующих, кодировках? Компилятор же возьмёт и поломает работу программы.
Сперва компилятор преобразует каждую из строк в юникод-представление, чтобы избежать потери данных
Это шутка такая? В Utf-8 большинство значений массива 0..2^48 не используются! А в ansistringe используется любая комбинация байтов которую в неё можно записать. Поэтому потери при такой технологии запланированы заранее.
- Код: Выделить всё
Та часть символов, что не может быть представлена в этой кодировке будет заменена согласно стандарта на символ-заменитель, обычно это "?" для однобайтовых строк.
Порча информации на ровном месте, о которой программист компилятор совсем не просил. Говно такое перекодирование. Как его отключить?
Тут в другом вопрос, а зачем пытаться это делать, то есть зачем человеку в здравом уме писать
Управляющие символы очень даже нужны, а когда они пересекаются с теми символами что можно написать на клавиатуре или увидеть на экране, то происходят такие сопли как в баше, типа экранирований экранирований пробелов, наклонных чёрточек и неадекватного разбора текста.