[fpc-pascal] Generic String Functions
Sven Barth
pascaldragon at googlemail.com
Fri Feb 28 15:08:46 CET 2014
Am 28.02.2014 15:01, schrieb Michael Schnell:
> On 02/28/2014 01:04 PM, Marco van de Voort wrote:
>> Moreover, will operations that use character access make sense at all
>> if you don't know what the actual encoding is?
> The administrative record of each "New Delphi string" contains the
> encoding type and the byte-count for each code. So "you" (the compiler
> and the RTL) do know it.
>
> The "only" shortcoming in Delphi is that the handling is completely
> "static":
> - if the encoding definition of the type the string is created with
> is not "RAW", the encoding needs to be known at compile time (i.e. the
> encoding type is not allowed to be modified at run time)
It is possible as some mails a few months back have shown. If you have a
function that has a RawByteString return type then you can assign that
to a string of any static encoding even if the dynamic encoding is not
the same (and then static and dynamic encoding of the string variable
will not match, nevertheless the RTL and the compiler will handle them
correctly (at least I hope so ^^).
> - if the encoding definition of the type the string is created with
> is "RAW", auto-conversion from this string to a non-RAW is not done.
>
> Hence (including - but not only - for decent use on multiple OSes) an
> additional "fully dynamically encoded" type (I suggest to call the
> type of this Strings "Generic") is necessary.
The non-conversion nature of RawByteString has its use. Namely to
implement the conversion mechanism of any dynamically encoded type (like
the current AnsiString is) without the need to implement yet another
special construct.
Regards,
Sven
More information about the fpc-pascal
mailing list