Как использовать 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 для соответствующих будущих версий, но это дает идею.