我在德爾福XE以下幾點:如何使用TFormatSettings.Create而不是特定於平臺?
fSettings := TFormatSettings.Create(LOCALE_USER_DEFAULT);
但我始終得到編譯警告:
W1002 Symbol 'Create' is specific to a platform
什麼是做這種正確的方法,讓我沒有得到一個警告?
我在德爾福XE以下幾點:如何使用TFormatSettings.Create而不是特定於平臺?
fSettings := TFormatSettings.Create(LOCALE_USER_DEFAULT);
但我始終得到編譯警告:
W1002 Symbol 'Create' is specific to a platform
什麼是做這種正確的方法,讓我沒有得到一個警告?
你有兩個選擇
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}
TFormatSettings.Create
有不同的重載。具有LCID的那個特定於Windows。沒有任何參數的人和將區域名稱作爲字符串的人更具可移植性。
或者,如果您知道您的軟件永遠不會用於Delphi for Windows以外的其他任何軟件,您可以取消特定於平臺的單元和過程的警告。 VCL包含現在不受支持的平臺(如Linux(Kylix)和.NET(Delphi.NET))的痕跡,並且由於它們已經死亡,所以將代碼移植到這些平臺可能會浪費時間。
我的代碼是現在寫法如下:
{$IFDEF VER220}
FormatSettings := TFormatSettings.Create(GetThreadLocale);
{$ELSE}
GetLocaleFormatSettings(GetThreadLocale, FormatSettings);
{$ENDIF}
您可能想要調整該IFDEF以適合未來版本,但它提供了這個想法。
選項3.全局禁用警告。如果你永遠不會爲Windows之外的其他平臺構建,那麼根本沒有必要啓用它。 – 2012-02-01 17:20:56
如果我選擇使用字符串版本,那麼等同於LOCALE_USER_DEFAULT的字符串是什麼? – croceldon 2012-02-01 18:49:35
嘗試使用空字符串或不帶參數的構造函數,這將調用[GetThreadLocale](http://msdn.microsoft.com/en-us/library/windows/desktop/dd318127%28v=vs.85%29。 aspx)函數內部。只需要注意對'SetThreadLocale'的調用,因爲可以改變這個函數的結果。 – RRUZ 2012-02-01 18:59:59