[fpc-pascal] How to know the string type of a variable?

Mattias Gaertner nc-gaertnma at netcologne.de
Mon Dec 30 20:17:58 CET 2013

On Mon, 30 Dec 2013 19:19:20 +0200
Juha Manninen <juha.manninen62 at gmail.com> wrote:

> On Mon, Dec 30, 2013 at 2:35 PM, Marcos Douglas <md at delfire.net> wrote:
> > Is possible to know what string type of a variable (AnsiString,
> > UTF8String, RawByteString, etc)?
> When UTF-8 encoded string is stored in AnsiString (as in LCL), this
> test should tell you if it actually is UTF-8 string:
>   if Length(s) <> UTF8Length(s) then
>   begin
>     // UTF-8
>   end;

This is wrong.
There is no test for UTF-8 versus 8-bit windows codepage.
A good heuristic is this: 

if FindInvalidUTF8Character(PChar(Pointer(s)),length(s))<0 then
  // UTF-8


More information about the fpc-pascal mailing list