Michael Schnell schrieb:
On 10/21/2011 10:24 PM, Hans-Peter Diettrich wrote:


The bad news about new Delphi strings is the addition (overload) of functions with RawByteString arguments, which *take* strings of any encoding, but then *ignore* that encoding. These versions certainly must fail for all MBCS encodings :-(

Is there an agreement on how this should work ?

function parameter type .... Unicode string type coming in ... actual encoding ID of string coming in -> conversion

I'm not sure what you mean. Whenever a UnicodeString is passed as an argument, the UnicodeString version is called, not the RawByteString version.

When only AnsiString types are passed as parameters, the RawByteString version is called, and has to deal with possibly different encodings. The Delphi implementations simply ignore any encoding, so that the results are almost unusable :-(

In the AnsiStrings and StrUtils units another set of overloaded procedures is provided, for native AnsiString(CP_ACP) arguments. These versions are called only for all-native AnsiString arguments, so that no conversions are required.


1) RawByte ... any .. any -> supposedly no, supposedly keeping the encoding ID
 2) not Raw ...  Raw ... $FFFF (="RAW") -> ???
 3) not Raw ... same  ... matching  -> obviously No
4) not Raw ... same ... not matching (maybe $FFFF) -> this is an intersexual String what to do ?
[...]

Please note that the RawByteString type is not an intended type for variables, only for subroutine arguments. Strings of that type are either empty, with no encoding, or they hold the last assigned string, including its encoding.

DoDi


--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to