On 12/11/15, Sven Barth <pascaldra...@googlemail.com> wrote: > Not necessarily. You can use SetCodePage() to change the code page of > the string without triggering a codepage conversion by using the third > parameter which is a Boolean that tells the function to either do a > conversion (True; default) or not (False). You'd then need to declare > the UTF8* routines as RawByteString and explicitly handle the type > conversion.
That's not really an option since it will break every single program using those functions. AFAIK the Utf8* functions assume their input is UTF8 encoded (they do not check), so something like this should work? {$ifndef NO_CP_RTL} procedure Utf8Delete(var S: Utf8String; StartCharIndex, CharCount: PtrInt); overload; var Temp: String; begin SetLength(Temp, Length(S)); Move(S[1], Temp[1], Length(S)); //nex step might not be needed? SetCodePage(RawBytestring(Temp), CP_UTF8, False); UTF8Delete(Temp, StartCharIndex, CharCount); SetLength(S, Length(Temp)); Move(Temp[1], S[1], Length(Temp)); end; {$endif} Anyhow, as stated before, there should be noneed to use the type Utf8String in Lazarus programs. Bart -- _______________________________________________ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus