Michael Schnell schrieb:
On 06/25/2013 01:05 AM, Hans-Peter Diettrich wrote:
A RawByteString can obtain any encoding, so no conversions are required.
But when assigned back to an UnicodeString, the obtained encoding is
used to convert the string.
That sounds good. The name "RAW" just misled me to think it would not
hold a character encoding.
If this in fact is a completely dynamically encoded string type, things
like TStringList should use same in their interface, thus preventing all
conversions, when a string of any encoding type is stored there and
retrieved to a variable of the appropriate dedicated encoding type
(while being auto-converted if retrieved to variable forcing a different
encoding).
This is not the case :-(
A variable can not force a conversion, when a RawByteString is assigned
to it :-(
Only the documentation
http://docwiki.embarcadero.com/Libraries/XE4/en/System.RawByteString
shows that they seemingly are not convinced that all this decently works
:-( .
At least it doesn't work as you expected.
So a decent system should _additionally_ provide completely unencoded 8,
16, 32 and 64 Bit entity Strings for "technical" usage (similar to pipes
etc) (now not using the "RAW" naming :-) .
It's *only* the use of strings of different encodings, that make
conversions necessary. Efficient code must be based on a single
encoding, with conversions only from and to the outer world (OS, files...).
DoDi
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel