[Lazarus] Problem with non-ascii chars fpc-3.0.0 vs fpc-3.1.1 under Windows

zeljko zeljko at holobit.net
Wed Apr 27 21:17:07 CEST 2016


On 04/27/2016 09:00 PM, Mattias Gaertner wrote:
> On Wed, 27 Apr 2016 20:30:43 +0200
> zeljko <zeljko at holobit.net> wrote:
>
>> Hi,
>> Just run into problem with fpc-3.0.0, OS Windows-10 64bit, 32bit
>> application, lazarus trunk qtlcl and win32 ws both have same problem.
>>
>> fpc-3.1.1 (18.01.2016) is correct - both running from lazarus or as
>> standalone.
>>
>> fpc-3.0.0 is not correct in both cases (even worse if running from
>> lazarus, then GetEnvironmentVariableUTF8 returns garbage instead of
>> letter Ž.
>>
>> fpc-2.6.4 - works just fine.
>>
>>
>> My project doesn't use anything special - pure empty project with one
>> form and TMemo - no extra settings like -FcUTF8 or similar, using mode
>> delphi ....
>>
>> Problematic part is line with CACHEDIR= (see screenshoots) which is
>> correct with 3.1.1 and it returns correct path from this function:
>>
>> function GetCacheDir_: String;
>> {$IFDEF MSWINDOWS}
>> var
>>     s: string;
>>     s1: string;
>> {$ENDIF}
>> begin
>>     {$IFDEF UNIX}
>>     Result := GetEnvironmentVariable('HOME') + PathDelim + '.holobit';
>>     {$ELSE}
>>     // fpc-3.1.1 returns correct values here, while fpc-3.0.0 NOT
>>     // if environmentvariable contains non-ascii chars
>>     s := GetEnvironmentVariable('HOMEDRIVE');
>>     // added s := s+ to fit into mail ...
>>     s := s + GetEnvironmentVariable('HOMEPATH')+PathDelim+'.holobit';
>>     SetLength(s1, length(s));
>>     OEMToAnsiBuff(@S[1], @S1[1], length(S1));
>
> OEMToAnsiBuff expects a string in DOS codepage and returns a string in
> Windows codepage.

Yes, I know that ,but that's not problem...look below...

> GetEnvironmentVariableUTF8 returns an UTF-8 encoded string.
>
> What encoding do you need for the function result?

UTF-8, but question is why 3.1.1 (and 2.6.4) returns correct result but 
3.0.0 NOT with same project and same settings.

Another thing is that project when running from IDE with fpc-3.0.0 
doesn't get correct result even for GetEnvironmentVariableUTF8(), while 
3.1.1 is correct again.



zeljko





More information about the Lazarus mailing list