Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 如何正确地从给定的LANGID查询语言名称字符串?_Windows_Winapi_Locale_Nls - Fatal编程技术网

Windows 如何正确地从给定的LANGID查询语言名称字符串?

Windows 如何正确地从给定的LANGID查询语言名称字符串?,windows,winapi,locale,nls,Windows,Winapi,Locale,Nls,输入时我有一个语言ID。 在输出时我希望该语言的完整本地化名称 我使用GetLocaleInfo(…,LOCALE\u SLANGUAGE,…)填充字符串。在输入时收到0,并且GetLocaleInfo用用户默认语言填充字符串,而不是指示中性语言(预期)之前,所有操作都很正常。 据我所知,没有任何特殊的区域设置\u XXX\u默认常量等于0 下面是一个测试用例: procedure TForm1.FormCreate(Sender: TObject); var wIDLanguage: WO

输入时我有一个语言ID。 在输出时我希望该语言的完整本地化名称

我使用
GetLocaleInfo(…,LOCALE\u SLANGUAGE,…)
填充字符串。在输入时收到
0
,并且
GetLocaleInfo
用用户默认语言填充字符串,而不是指示中性语言(预期)之前,所有操作都很正常。 据我所知,没有任何特殊的区域设置\u XXX\u默认常量等于
0

下面是一个测试用例:

procedure TForm1.FormCreate(Sender: TObject);
var
  wIDLanguage: WORD;
  lpLCData: string;
  cchData: Integer;
begin
  wIDLanguage := 0;
  Assert(wIDLanguage = MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL));

  cchData := GetLocaleInfo(MAKELCID(wIDLanguage, SORT_DEFAULT), LOCALE_SLANGUAGE, nil, 0);
  Win32Check(cchData <> 0);
  //Win32Check(GetLastError = ERROR_INSUFFICIENT_BUFFER);
  SetLength(lpLCData, cchData);
  Win32Check(GetLocaleInfo(MAKELCID(wIDLanguage, SORT_DEFAULT), LOCALE_SLANGUAGE, PChar(lpLCData), Length(lpLCData)) <> 0);
  SetLength(lpLCData, Length(lpLCData) - 1);

  Caption := '"' + lpLCData + '"';
end;
过程TForm1.FormCreate(发送方:TObject);
变量
语言:单词;
lpLCData:字符串;
cchData:整数;
开始
语言:=0;
断言(wIDLanguage=MAKELANGID(LANG_NEUTRAL,SUBLANG_NEUTRAL));
cchData:=GetLocaleInfo(MAKELCID(wIDLanguage,SORT\u DEFAULT),LOCALE\u SLANGUAGE,nil,0);
Win32Check(cchdata0);
//Win32检查(GetLastError=ERROR\u缓冲区不足);
设置长度(lpLCData、cchData);
Win32Check(GetLocaleInfo(MAKELCID(wIDLanguage,SORT_DEFAULT),LOCALE_SLANGUAGE,PChar(lpLCData),Length(lpLCData))0;
设置长度(lpLCData),长度(lpLCData)-1;
标题:='“'+lpLCData+'”;
结束;
  • 我做错了什么?
  • 如何正确检索语言名称?