[fpc-devel] Unicode support in RTL - Roadmap
    Jonas Maebe 
    jonas.maebe at elis.ugent.be
       
    Fri Nov 21 15:27:55 CET 2008
    
    
  
On 21 Nov 2008, at 14:50, Michael Schnell wrote:
>> If Length() would return its value in chars, what length in *bytes*  
>> would the following call set:
>>
>> SetLength(utfstring_1), Length(utfstring_2));
>>
> I don't really understand your question.
>
> I think would would need to have two different function
>
> UTF8ElementlLength(UTF8String) and UTF8PointLength(UTF8String),  
> first giving the string length in code elements (byte) and second  
> giving the length in code points (unicode characters),
>
> So UTF8ElementlLength('Ü') would be 2 and UTF8PointLength('Ü') would  
> be 1.
Or 2, depending on whether it's predcomposed or decomposed.
> I think we should have a third function Length(UTF8String) that can  
> be selected by the user (e.g. via a {$ option to be mapped to wither  
> of the two.
He's simply talking about the case where Length is mapped to your  
proposed UTF8PointLength.
> I do see that there in fact is a compatibility problem when porting  
> old code with the setting of UTF8Count=Point.
>
> here
>
> SetLength(utfstring_1), Length(utfstring_2)); would be translated as
> UTF8PointSetLength(utfstring_1), UTF8PointLength(utfstring_2));
>
> which does not make sense if UTF8PointLength(utfstring_1) is smaller  
> than UTF8PointLength(utfstring_2).
It does not make any sense under any circumstances, because there is  
no way for "UTF8PointSetLength" to know how many bytes it has to  
allocate when you pass a value (any value, regardless of where it  
comes from) to it.
Jonas
    
    
More information about the fpc-devel
mailing list