GetLocaleInfo-需要更多帮助-Delphi XE5
首先,我需要知道计算机上使用的测量单位,以便设置转换为twips(1440或567)的常数。我在网络上搜索了“无处不在”,但我很难确定是应该使用GetLocaleInfo还是GetLocaleInfo。有人能解释一下区别吗 其次,我在这个论坛的“如何在控制面板区域和语言高级设置中读取和更改系统测量单位”下找到了答案。它显示了设置测量单位的代码,但我在设置获取信息的参数时遇到了问题。任何人都可以为相应的函数(GetLocaleInfo或GetLocaleInfo)提供一个示例GetLocaleInfo-需要更多帮助-Delphi XE5,delphi,Delphi,首先,我需要知道计算机上使用的测量单位,以便设置转换为twips(1440或567)的常数。我在网络上搜索了“无处不在”,但我很难确定是应该使用GetLocaleInfo还是GetLocaleInfo。有人能解释一下区别吗 其次,我在这个论坛的“如何在控制面板区域和语言高级设置中读取和更改系统测量单位”下找到了答案。它显示了设置测量单位的代码,但我在设置获取信息的参数时遇到了问题。任何人都可以为相应的函数(GetLocaleInfo或GetLocaleInfo)提供一个示例 var L:
var
L: array [0..1] of Char;
const
LOCALE_NAME_SYSTEM_DEFAULT = '!x-sys-default-locale';
begin
Win32Check(GetLocaleInfoEx(LOCALE_NAME_SYSTEM_DEFAULT, LOCALE_IMEASURE, @L, 2) <> 0);
if L[0] = '0' then
// metric
var
L:字符的数组[0..1];
常数
语言环境\名称\系统\默认值='!x-sys-default-locale';
开始
Win32Check(GetLocaleInfoEx(LOCALE\u NAME\u SYSTEM\u DEFAULT,LOCALE\u IMEASURE,@L,2)0);
如果L[0]=“0”,则
//公制
GetLocaleInfo
接受a,GetLocaleInfo
接受a。它们都检索区域设置信息。如文件所述,对于Vista和更高版本,建议使用GetLocaleInfo
来支持自定义区域设置。到目前为止您尝试了什么?我已经尝试了这两种形式。在每种情况下,我都从许多可用的示例中计算出了区域设置和类型。然而,作为一个新手,我很难找出“lpLCData”和“cchData”中的内容,因为我看不到与结果0或1的相关性。另外,我还没有看到任何对Win32Check的引用-我认为这是为了捕获任何错误。代码工作得很好。谢谢有没有办法正式宣布问题已经解决?不客气。您可以接受答案,上下箭头附近有一个复选标记。请注意,这不是调用函数的唯一方法。关键是要找到正确的位置。一旦你知道你必须通过一个两个字符的缓冲区,你想怎么做就怎么做。Win32Check是可选的,重要的是检查错误,仅此而已。
var
L: array [0..1] of Char;
const
LOCALE_NAME_SYSTEM_DEFAULT = '!x-sys-default-locale';
begin
Win32Check(GetLocaleInfoEx(LOCALE_NAME_SYSTEM_DEFAULT, LOCALE_IMEASURE, @L, 2) <> 0);
if L[0] = '0' then
// metric