[fpc-devel] new string - question on usage

Michael Schnell mschnell at lumino.de
Tue Oct 11 10:52:29 CEST 2011


On 10/11/2011 11:20 AM, Hans-Peter Diettrich wrote:
> Michael Schnell schrieb:
>> Why should a function Utf8ToLower be used (or even be  defined for 
>> normal use) ?
>
> Because it expects and UTF8 argument, and provides an UTF8 result, so 
> that no further conversions are required when used with strings of 
> exactly that encoding.
I don't understand your argument. If ToLower gets a new string that is 
UTF8 encoded, the result should be a new string that is UTF8 encoded. So 
why bother. Checking the encoding Word and branching tho the appropriate 
encoding-aware functionality is a very fast operation.
>
>> With dynamically encoded Strings "ToLower" should work for any encoding.
>
> You mean something like this?
>   function ToLower(s: RawByteString): RawByteString;
> [dunno whether RawByteString is an allowed Result type at all]
In fact I still don't understand the difference between a type called 
"RawByteString"and a basic new String that happens to be set to the 
encoding "RawByte".

IMO, calling ToLower with a string that is set to the encoding "RawByte" 
does not make sense and should generate an exception. The user code 
should set a decent "readable character" encoding before doing something 
like ToLower (or "+" or comparing with a string that is in a "readable 
character" encoding), if the string is obtained in a way that did not 
set such a coding signature.

-Michael



More information about the fpc-devel mailing list