cpstrnew branch (was Re: [fpc-devel] Freepascal 2.4.0rc1 released)

Paul Ishenin webpirat at mail.ru
Mon Nov 9 15:36:06 CET 2009


Michael Schnell wrote:
> Is this page
>
> http://wiki.freepascal.org/FPC_Unicode_support
>
> (saying "Upcoming Delphi release codenamed Tiburon will natively support
> Unicode")
>
> still valid ?
>   
At least the branch link is valid :)

Yesterday I asked Florian to permit me to help him with the development. 
So at moment I don't know everything about the branch but already have 
some info.

Branch is trying to implement similar to d2009 codepage string support. 
What is already done there:

1. string type internal representaion has changed. It now has 
elementsize and codepage fields.
2. new string type declaration syntax although it differs from delphi. 
FPC syntax is:
Cp1251StringType = string<1251> and delphi do this so
Cp1251StringType = type AnsiString(1251)
3. RawByteString type (an ansi string type which does not perform any 
codepage conversions) with compiler support. Although this support is a 
bit differ from delphi. For example: delphi does not prefere 
RawByteString to other ansi string types for overload functions. It is 
imposible to pass ansi string (<> RawByteString) to functions by 
reference (using var or out) while in FPC it is possible. Although, 
delphi allow this for some internal functions (not fair).
4. Most of codepage convertion methods and string type convertion 
methods (ansistring <=> unicodestring <=> widestring)

But RTL is still needs a lot of work and review. Functions which has 
AnsiString arguments will convert all your codepage strings to the 
default system encoding. So where is needed this must be replaced by 
RawByteString type (for WriteLn, ReadLn, etc).

Today I commited a few fixes to that branch. I also have few 
non-commited changes which make codepage string concatenation and 
WriteLn work but they made the compiler compilation fail and thus need 
more attention :)

Best regards,
Paul Ishenin.



More information about the fpc-devel mailing list