[Lazarus] Problem with non-ascii chars fpc-3.0.0 vs fpc-3.1.1 under Windows
Mattias Gaertner
nc-gaertnma at netcologne.de
Wed Apr 27 21:00:50 CEST 2016
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.
GetEnvironmentVariableUTF8 returns an UTF-8 encoded string.
What encoding do you need for the function result?
> Result := S1;
> {$ENDIF}
> end;
>
> So, my question would be: is it known bug in 3.0.0 and will be fixed in
> 3.0.2 or it's already merged in fixes_3_0 or I can sit and cry...or I'm
> missing something ?
Mattias
More information about the Lazarus
mailing list