我在Delphi XE中有以下内容:
fSettings := TFormatSettings.Create(LOCALE_USER_DEFAULT);
但我总是在编译时收到警告:
W1002 Symbol 'Create' is specific to a platform
这样做的正确方法是什么,这样我就不会收到警告?
答案 0 :(得分:13)
您有两个选择
1)使用使用字符串而不是TLocaleID
class function Create(const LocaleName: string): TFormatSettings; overload; static;
2)在本地禁用警告
{$WARN SYMBOL_PLATFORM OFF}
fSettings := TFormatSettings.Create(LOCALE_USER_DEFAULT);
{$WARN SYMBOL_PLATFORM ON}
答案 1 :(得分:2)
TFormatSettings.Create
有不同的重载。具有LCID的那个特定于Windows。没有任何参数的那个以及将区域设置名称作为字符串的那个更具可移植性。
如果您知道您的软件永远不会用于除Delphi for Windows以外的任何其他软件,您可以取消对特定于平台的单元和过程的警告。 VCL包含现在不受支持的平台的痕迹,例如Linux(Kylix)和.NET(Delphi.NET),并且由于它们已经死亡,因此将代码移植到这些平台可能是浪费时间。
答案 2 :(得分:2)
我的代码现在编写如下:
{$IFDEF VER220}
FormatSettings := TFormatSettings.Create(GetThreadLocale);
{$ELSE}
GetLocaleFormatSettings(GetThreadLocale, FormatSettings);
{$ENDIF}
您可能希望针对适当的未来版本调整IFDEF,但它提供了这个想法。