Эффективный способ сделать это с использованием чистого VCL - это использовать SelStart
, SelLength
и SelText
.
function GetCharByIndex(Index: Integer): Char;
begin
RichEdit.SelStart := Index;
RichEdit.SelLength := 1;
Result := RichEdit.SelText[1];
end;
Вы, вероятно, захотите сохранить выделение перед его изменением, а затем восстановить его после прочтения символа.
Это, однако, довольно грязный способ чтения персонажа. Если вы готовы использовать сырой Win32 API, тогда вы можете использовать EM_GETTEXTRANGE
.