Как использовать TFormatSettings.Создавать, не будучи специфичным для платформы?

У меня есть следующее В Delphi XE:

fSettings := TFormatSettings.Create(LOCALE_USER_DEFAULT);

но я всегда получаю предупреждение о компиляции:

W1002 Symbol 'Create' is specific to a platform

Как правильно это сделать, чтобы я не получил предупреждение?

3 ответов


у вас есть два варианта

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 для Windows. VCL содержит следы теперь неподдерживаемых платформ, таких как Linux (Kylix) и .NET (Delphi.NET), а так как они как мертвый, как может быть, сделать ваш код портативным для этих платформ может быть пустой тратой времени.


мой код теперь написан следующим образом:

{$IFDEF VER220}
    FormatSettings := TFormatSettings.Create(GetThreadLocale);
{$ELSE}
    GetLocaleFormatSettings(GetThreadLocale, FormatSettings);
{$ENDIF}

вы, вероятно, захотите настроить этот IFDEF для соответствующих будущих версий, но это дает идею.