как получить язык операционной системы двухбайтовый в delphi? - PullRequest
0 голосов
/ 20 ноября 2018

Я хочу определить язык операционной системы - двухбайтовый или нет. чтобы получить язык я использую функцию GetLocaleInfo окон. Но я хочу определить, является ли язык двухбайтовым или нет. Я могу сделать это, взяв название языка и решив, является ли он двухбайтовым или нет (т. Е. Если язык японский, то его двухбайтовый), но есть ли другой способ получить напрямую, является двухбайтовый язык операционной системы или нет.

код, который я использую, чтобы получить язык:

procedure GetLanguage();
    var
    Buffer : PChar; 
     Size : integer;
    begin
      Size := GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_SENGLANGUAGE, nil, 0);
      GetMem(Buffer, Size);
      try
        GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_SENGLANGUAGE, Buffer, Size);
        Writeln(Buffer);
      finally
        FreeMem(Buffer);
      end;
    end;

1 Ответ

0 голосов
/ 20 ноября 2018

Что вы называете "двойной байт"?Вы имеете в виду, что при использовании AnsiString в нем могут быть символы, закодированные двумя AnsiChar?

Использовать следующий код:

FarEast := GetSystemMetrics(SM_DBCSENABLED) <> 0;

Отредактировано, поскольку SysLocale.FarEast принудительно устанавливается в true в Unicode Delphi.

...