2012-02-01 9 views

Odpowiedz

12

Masz dwie opcje

1) używać wersji przeciążeniem, który wykorzystuje ciąg zamiast TLocaleID

class function Create(const LocaleName: string): TFormatSettings; overload; static; 

2) wyłączyć ostrzeżenie lokalnie

{$WARN SYMBOL_PLATFORM OFF} 
    fSettings := TFormatSettings.Create(LOCALE_USER_DEFAULT); 
{$WARN SYMBOL_PLATFORM ON} 
+5

Opcja 3. Wyłącz globalnie ostrzeżenie. Jeśli nigdy nie tworzysz platform innych niż Windows, nie ma sensu go włączać. –

+0

Jeśli zdecyduję się użyć wersji łańcuchowej, jaki jest ciąg znaków, który jest równoważny LOCALE_USER_DEFAULT? – croceldon

+0

spróbuj użyć pustego łańcucha lub konstruktora bez parametrów, to wywoła [GetThreadLocale] (http://msdn.microsoft.com/en-us/library/windows/desktop/dd318127%28v=vs.85%29. aspx) wewnętrznie. po prostu bądź ostrożny z wywołaniami do 'SetThreadLocale', ponieważ może to zmienić wynik tej funkcji. – RRUZ

2

Istnieją różne przeciążenia TFormatSettings.Create. Ten z LCID jest specyficzny dla Windows. Ten bez parametrów i ten, który przyjmuje nazwę locale jako ciąg, jest bardziej przenośny.

Możesz też wyłączyć ostrzeżenie dla specyficznych dla platformy jednostek i procedur, jeśli wiesz, że twoje oprogramowanie nigdy nie będzie używane do niczego innego niż Delphi dla Windows. VCL zawiera ślady obecnie nieobsługiwanych platform, takich jak Linux (Kylix) i .NET (Delphi.NET), a ponieważ są one tak martwe, jak to tylko możliwe, uczynienie twojego kodu przenośnym na tych platformach może być stratą czasu.

2

Moje kodu jest teraz napisany w następujący sposób:

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

Prawdopodobnie będziesz chciał dostosować IFDEF do odpowiednich przyszłych wersji, ale daje to pomysł.

+0

Ten fragment jest w rzeczywistości wielkością bardziej specyficzną dla platformy niż na którą kompiluje się skarga. – OnTheFly

+0

@ user539484 Być może, ale IIRC otrzymałem go z pomocy jako zalecany sposób. – mj2008

Powiązane problemy