Hi,

Am I right, when I say, that SetString(S, P, L) sets S code page do declared code page of S ?

(So that SetString does not expect, that buffer pointed by P contains string encoded in CP_ACP)?

So when S is UTF8String then after SetString S will have dynamic codepage = CP_UTF8 and

when S is AnsiString then after SetString S will have dynamic codepage = CP_ACP ?

(In both case S will contains same bytes)


Btw this documentation page http://www.freepascal.org/docs-html/rtl/system/setstring.html says about:

procedure SetString(out S: AnsiString; Buf: PAnsiChar; Len: SizeInt);

but when I type SetString( in code help hint says:

procedure SetString(out S: RawByteString; Buf: PAnsiChar; Len: SizeInt);

difference in S declaration (once AnsiString, second RawByteString) probably caused by lines in astrings.inc:

1411    {$ifdef FPC_HAS_CPSTRING}
1412 Procedure fpc_setstring_ansistr_pansichar(out S : RawByteString; Buf : PAnsiChar; Len : SizeInt; cp: TSystemCodePage); rtlproc; compilerproc;
1413    {$else}
1414 Procedure SetString(out S : AnsiString; Buf : PAnsiChar; Len : SizeInt);
1415    {$endif}

May be that line 1414 should be also RawByteString ?

Thanks

-Laco.

_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to