Raw := RawByteString(Wide);//CONVERT UTF-16 back into ASCII (without any codepage)
I := Pos('H', Raw);//Fast search in RawByteString
Raw := AnsiCopy(Raw, I, 3);//Use fast copy on RawByteString -> Raw = "HEA"
Wide := String(Raw);//CONVERT ASCII to UTF-16 (without any codepage)
C := PAnsiChar(Raw);//YOU CAN EVEN USE PAnsiChar!!!
Raw := RawByteString(C);//AND convert PAnsiChar back to RawByteString/AnsiString
C := PAnsiChar(Raw);
aOutputLines.Add(String(C[2]));//output "A" (the third letter from C (PAnsiChar is always 0-based)
AnsiDelete(Raw, 1, 1);//Fast delete in RawByteString -> Raw = "EA"
AnsiInsert(RawByteString('x'), Raw, 2);//Fast insert -> Raw = "ExA"
Raw := UpperCase(Raw);//Fast uppercase -> Raw = "EXA"
aOutputLines.Add(String(Raw));//output "EXA"
Raw := LowerCase(Raw);//Fast uppercase -> Raw = "exa"
aOutputLines.Add(String(Raw));//output "exa"
end;