Для чего удобнее? Повторюсь, каков практический смысл?
Пример: мой компилятор сайта с фанфиками (недо- CMS, фактически). Синтакс исходников - не по науке, а как удобнее автору в ворде текст романа оформлять.
В результате - парсинг вдоль строки поминутно лазит проверять, какой был предыдущий символ или какие следующие символы.
Тут и тестов не нужно.
Посмотрел исходники utf8copy. Естественно, она проходит по всей строке вплоть до указанного места чтобы найти его истинную позицию.
Иии, переведённый с юникода в utf-8 парсинг плавно превращается из O*N в O*N^2.
Дружественность к кешу? Не, не слышали.
В моём случае, сотни строк (один файл - одна глава), каждая в десятки килобайт, и COPY() там вызывалась бы на каждый символ - в то время, как сейчас я в большинстве случаев обращаюсь к букве как к элементу массива по индексу.
ЛИБО ЖЕ надо всё это безобразие учитывать, первым проходом строя массив позиций и длин всех утф-8 символов, а потом адресуясь по нему при каждой copy, что внесло бы дополнительные баги и снизило наглядность кода. А у меня парсер, натыкаясь на директиву {$include, ещё правит рельсы впереди паровоза - т.е. врезает содержимое файла в строку не прерывая процесса. И приходилось бы это учитывать и 100500 раз перестраивать таблицу адресов символов.
..короче, работая с многобайтовой кодировкой, вы не работаете, а трахаетесь с её изысками. Это НЕ формат для обработки.
Это не говоря уже, что это всё LazUtf8, в чистом фри паскале этих функций нет.