如何在delphi中获取操作系统的语言是双字节?
how to get language of operating system is double byte in delphi?
我想检测操作系统的语言是否为双字节。
要获取我正在使用 windows 的 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;
你叫什么"double byte"?你的意思是在使用AnsiString的时候,可能会有两个AnsiChar编码的字符?
使用以下代码:
FarEast := GetSystemMetrics(SM_DBCSENABLED) <> 0;
已编辑,因为 SysLocale.FarEast
在 Unicode Delphi 上被强制为真。
我想检测操作系统的语言是否为双字节。 要获取我正在使用 windows 的 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;
你叫什么"double byte"?你的意思是在使用AnsiString的时候,可能会有两个AnsiChar编码的字符?
使用以下代码:
FarEast := GetSystemMetrics(SM_DBCSENABLED) <> 0;
已编辑,因为 SysLocale.FarEast
在 Unicode Delphi 上被强制为真。