[fpc-devel] Encoded AnsiString
Michael Van Canneyt
michael at freepascal.org
Sun Dec 29 10:57:20 CET 2013
On Sun, 29 Dec 2013, Hans-Peter Diettrich wrote:
> Inspired by the current Lazarus discussion I'd like to learn more about the
> current state of the implementation of the new AnsiStrings.
> In case nothing has be done yet, I'd suggest to extend TAnsiRec by the new
> codePage and elemSize fields (words). These can be zero for now, so that the
> remaining codebase is not affected. Then it will be possible to play around
> with encoded strings, using the codePage field.
All this is done already a long time ago in trunk.
We're way past that stage.
Current stage is the creation of a unicode RTL, where all base file/string
operations accept unicode strings. This is done too.
Next step is creation of the unicode RTL, where "string" = "widestring".
This will be combined with the dotted unit filenames, to be Delphi 2010+ compatible.
To allow people to choose, 2 RTLs will be created: one unicode (string=ansistring),
one non-unicode (string=widestring).
This will result (probably) in 2 paths:
This is not decided yet.
I planned the work in februari/march.
> A related question:
> Why is the string length set to zero in NewAnsiString, when the allocated
> Length is already known?
Because the allocated memory length is not necessarily equal to the string length.
If you have a string of length 50, setting the length to 25 will not discard
and reallocate the memory block, but merely set the character length to 25.
More information about the fpc-devel