Заметил странную вещь с RichEdit.
Если я делаю
RichEdit.SelStart:=PosEx('пример',RichEdit.Text,i);
далее устанавливаю длину выделения
RichEdit.SetLength:=Length('пример');
и применяю скажем Color, то выделяется и обрабатывается вовсе не 'пример', а ' приме' или ' прим' или ' пр' или еще что-то в этом роде.
Короче не то что надо, а со смещением влево. Причем если я выведу
Copy(RichEdit.Text,PosEx('пример',RichEdit.Text,i),Length('пример'));
то мне выдаст то что надо - 'пример'.
Смещение это увеличивается с увеличением числа строк в RichEdit'е! Я сначала погрешил на невидимый возврат кареты #13#10 (что в принципе бред и не должно влиять), и сделал так чтобы для SelStart'а отнималось по одному символу, умноженному на номер строки. Это вроде бы сработало. Но как выяснилось не везде. Ниже по тексту, начиная с 10-й строки начали появляться другие смещения, не поддающиеся логике (то еще сильнее, то как обычно). Ошибки в коде нет, я всё сверял, делая Copy текста. Copy показывает что надо, а SelStart - смещен.
В общем, что-то здесь не то. Я что-то упускаю?