Как работать с спец символами Delphi?
Думаю, ваша задача более высокого уровня такова. Пользователи разрисовывают свои имена всякими там картинками, задача — убрать их.
Немного непонятно, с какой версией Delphi вы работаете, но, предположим, с 2010+.
Там string эквивалентно UnicodeString, 16-битной строке неограниченной длины, управляемой подсчётом ссылок средствами Delphi.
Юникод очень велик и будет расширяться, в идеале там может быть 1,15 млн. символов. Из них 120 тыс. уже занято.
Поэтому лучшим решением будет делать не чёрный список символов, а белый.
Качаем базу символов Unicode (есть где-то на unicode.org).
Делаем из неё фильтр по каким-нибудь признакам: например, буква/цифра/знак/комбинирующий/пробел и направление письма — либо слева направо, либо адаптирующееся.
Также для простоты исключаем символы с кодом 65536+ (с дополнительных плоскостей, они кодируются двумя WideChar).
Вот этим белым списком и пользуемся. Проходимся по строке и убираем все лишние.
если уже есть строка то, можно создать новую строку и посимвольно скопировать только те что входят в белый список, затем заменить всю строку, вот и получается спец символов нет, а вместо замены символа - замена строки.
если ввод в форму, то можно отсечь символы ещё на этапе введения хотя формально там получается тоже замена.