2012-02-01 25 views

Respuesta

12

tiene dos opciones

1) el uso de la versión de sobrecarga que utiliza una cadena en lugar de un TLocaleID

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

2) desactivar la alarma localmente

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

Opción 3. Desactive la advertencia globalmente. Si nunca construyes para plataformas que no sean Windows, no tiene mucho sentido habilitarlo. –

+0

Si elijo usar la versión de cadena, ¿cuál es la cadena que es equivalente a LOCALE_USER_DEFAULT? – croceldon

+0

intente utilizar una cadena vacía o el constructor sin parámetros, esto llamará a [GetThreadLocale] (http://msdn.microsoft.com/en-us/library/windows/desktop/dd318127%28v=vs.85%29. aspx) funcionan internamente. solo tenga cuidado con las llamadas a 'SetThreadLocale' porque puede cambiar el resultado de esta función. – RRUZ

2

Existen diferentes sobrecargas de TFormatSettings.Create. El que tiene un LCID es específico de Windows. El que no tiene parámetros y el que toma el nombre de una localidad como una cadena son más portátiles.

O bien, podría suprimir la advertencia para unidades y procedimientos específicos de la plataforma, si sabe que su software nunca se usará para nada que no sea Delphi para Windows. El VCL contiene trazas de plataformas ahora no compatibles como Linux (Kylix) y .NET (Delphi.NET), y como están muertas, hacer que su código sea portátil para esas plataformas puede ser una pérdida de tiempo.

2

Mi código es ahora escrito de la siguiente manera:

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

Es probable que desee ajustar ese IFDEF para las versiones futuras apropiadas, pero da la idea.

+0

Este fragmento en realidad es por magnitud más específico para la plataforma del que se queja el compilador. – OnTheFly

+0

@ user539484 Tal vez, pero IIRC lo obtuve de la ayuda como la forma recomendada. – mj2008

Cuestiones relacionadas