我正在编写一个多平台单元,其中包括使用 Delphi 的 TFormatSettings。我希望创建一个全局 TFormatSettings 让我可以访问我的家庭(英国)位置信息,而不管我的代码将使用的实际区域设置(例如,我需要英国小数分隔符和列表分隔符,这些分隔符因国家/地区而异)。我只是想读取这些值,而不是更改它们,或者修改实际的机器语言环境。为了测试我可以通过这种方式获取信息,我尝试了下面的代码。该代码在 32/64 Windows 中运行良好(返回美元符号,后跟英镑符号),但在我 2 岁的 Nexus 7 上的 Android 上运行时,返回两个输出的美元符号。
它是使用 XE7 和多设备应用程序创建的。
procedure TForm2.Button1Click(Sender: TObject);
var
FS : TFormatSettings;
begin
FS := TFormatSettings.Create( 'en-US' );
ShowMessageFmt( FS.CurrencyString );
FS := TFormatSettings.Create( 'en-UK' );
ShowMessage( FS.CurrencyString );
end;
我尝试了各种其他位置字符串,但没有成功。我已经深入研究了 SysUtils 中的“LIBICU”代码,但我正在扩展调试器和我的知识!谁能评论我可能做错了什么?谢谢你的帮助。
稍后编辑解决:要在 Android 中获取英国,您需要通过“en_GB”而不是“en-UK”。Uwe Raabe 显示的这个 Java 链接上也有很多有用的信息。