On Mon, Dec 30, 2013 at 9:48 AM, Marcos Douglas <m...@delfire.net> wrote: > On Mon, Dec 30, 2013 at 9:41 AM, Michael Van Canneyt > <mich...@freepascal.org> wrote: >> >> >> On Mon, 30 Dec 2013, Marcos Douglas wrote: >> >>> Hi, >>> >>> Is possible to know what string type of a variable (AnsiString, >>> UTF8String, RawByteString, etc)? >> >> >> You can try >> >> if TypeInfo(S)=TypeInfo(AnsiString) then >> >> etc. >> >> The following program >> >> procedure t(S : String); >> >> begin >> if typeinfo(s)=typeinfo(shortstring) then >> Writeln('ShortString') >> else >> Writeln('Ansistring'); end; >> >> begin >> t(''); >> end. >> >> Prints ShortString if compiled as-is (fpc mode), and prints AnsiString if >> compiled with -S2h (objfpc mode, string=ansistring) > > TypeInfo! > I was trying using "type(s)", "s is AnsiString"... I forgot. > > Thank you.
Well, didn't worked as I wanted. For example, I know UTF8String is an AnsiString but the TypeInfo should catch UTF8String not AnsiString, doesn't? See the code bellow: === BEGIN === procedure TForm1.Button1Click(Sender: TObject); var AStr: AnsiString; U8Str: UTF8String; UniStr: UnicodeString; function ShowType(S: string): string; begin if TypeInfo(S) = TypeInfo(AnsiString) then ShowMessage('AnsiString') else if TypeInfo(S) = TypeInfo(UTF8String) then ShowMessage('UTF8String') else if TypeInfo(S) = TypeInfo(UnicodeString) then ShowMessage('UnicodeString') end; begin AStr := 'ábçdé'; U8Str := 'ábçdé'; UniStr := 'ábçdé'; ShowType(AStr); ShowType(U8Str); ShowType(UniStr); end; === END === The result is: AnsiString AnsiString AnsiString Regards, Marcos Douglas _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal