Bjørnar Nielsen wrote:
> Arno,
> 
>> Would you expect a correct result as well if you base64-decoded a
>> quoted-printable encoded string? 
> 
> No, I agree. But the problem is not the decoding itself but the way
> Unicode-chars and Ansi-chars are treated. 
> This is the line where the problem lies:
> MyAnsichar := AnsiChar(UnicodeUrl[I]);

Yes, it expects a Char containing a 7-bit printable ASCII character.

> If UnicodeUrl is switched to AnsiString, the problem disappears.

This would introduce plenty of implicit string casts in existing 
Delphi code because in Delphi an ICS-URL is of type "string",
only the mapping of "string" changed in D2009+ from AnsiString
to UnicodeString. This is different in C++ Builder where generated
.hpp files export the mapped types (AnsiString and UnicodeString
explicitly). Note that such introduced string casts would corrupt 
invalid URLs *as well*. 
 
>> Can't you use your own custom function then?
> 
> Yes I can, but I think other users could benefit from my proposed
> change. I think this is a problem that was introduced with porting to
> Builder 2010 and using UnicodeString. This problem was not there
> before and maybe other users also have this problem now without
> knowing it.    
> 
> Why not make the changes I proposed when all it does is restoring the
> function to old behavior as when only AnsiString was used? 

The only workaround that comes to my mind was another overload 
that takes a RawByteString instead of string. I won't use AnsiString
because implicit ansi string casts must be avoided too.

-- 
Arno Garrels
--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be

Reply via email to