Obtener la configuracion regional.

08/05/2005 - 02:12 por William GS | Informe spam
Hola a todos. Como puedo obtener todo lo especificado en
la configuracion regional? formato de fecha, formato de
numeros decimales, formato de moneda, etc.

Muchas gracias de antemano,
William GSG

Preguntas similare

Leer las respuestas

#1 Rodrigo Corral [MVP]
08/05/2005 - 11:29 | Informe spam
GetLocaleInfo
EnumDateFormats
EnumTimeFormats
EnumCalendarInfo
GetCurrencyFormat
GetNumberFormat

Estas son las funciones que vienen a la cabeza que puedes utilizar... Si
miras su documentación en la MSDN seguro que encuetras alguna más que te es
útil.


Un saludo
Rodrigo Corral González [MVP]

FAQ de microsoft.public.es.vc++
http://rcorral.mvps.org
Respuesta Responder a este mensaje
#2 liuqinglong
06/07/2005 - 17:06 | Informe spam
William GS wrote in message
news:091401c55362$92f35c50$
Hola a todos. Como puedo obtener todo lo especificado en
la configuracion regional? formato de fecha, formato de
numeros decimales, formato de moneda, etc.

Muchas gracias de antemano,
William GSG
Respuesta Responder a este mensaje
#3 Fernando Marin
15/07/2005 - 17:36 | Informe spam
Hola William
usa
int GetLocaleInfo(
LCID Locale, // locale identifier
LCTYPE LCType, // information type
LPTSTR lpLCData, // information buffer
int cchData // size of buffer
);

int GetCurrencyFormat(
LCID Locale, // locale
DWORD dwFlags, // operation option
LPCTSTR lpValue, // input number string
CONST CURRENCYFMT *lpFormat, // formatting information
LPTSTR lpCurrencyStr, // output buffer
int cchCurrency // size of output buffer
);

int GetDateFormat(
LCID Locale, // locale
DWORD dwFlags, // options
CONST SYSTEMTIME *lpDate, // date
LPCTSTR lpFormat, // date format
LPTSTR lpDateStr, // formatted string buffer
int cchDate // size of buffer
);

http://msdn.microsoft.com/library/d...s_34rz.asp

Por ciero el numero de formatos para poner una moneda es tremendo,
en Europa casi cada pais tiene su forma de poner punto o coma para
los millares o decimales (en Suiza por ejemplo se utiliza coma alta), la
pisoción del signo menos (puede que en vez de menos se usen parentesis
para los negativos) o el monetario delante o detras, mas alguna
otra sutileza tregional...

Espero que el siguiente codigo sin comentar te pueda servir un poco para el
caso de las monedas

CString m_sSCURRENCY_Def;
// String used as the local monetary symbol.
CString m_sSINTLSYMBOL_Def;
// Three characters of the international monetary symbol specified in ISO
4217, "Codes for the Representation of Currencies and Funds," followed by
the character separating this string from the amount.
CString m_sSMONDECIMALSEP_Def;

CString m_sSMONTHOUSANDSEP_Def;

CString m_sSMONGROUPING_Def;
// Sizes for each group of monetary digits to the left of the decimal. An
explicit size is needed for each group; sizes are separated by semicolons.
If the last value is zero, the preceding value is repeated. To group
thousands, specify 3;0, for example.
CString m_sICURRDIGITS_Def;
// Number of fractional digits for the local monetary format. The maximum
number of characters allowed for this string is 3.
CString m_sIINTLCURRDIGITS_Def;
// Number of fractional digits for the international monetary format. The
maximum number of characters allowed for this string is 3.
CString m_sICURRENCY_Def;






iLong=GetLocaleInfo( m_lcdi,LOCALE_INEGCURR,lpLCData,250 );
lpLCData[iLong]=NULL;
CString sLCData=lpLCData;
m_sINEGCURR_Val=_T(" ? ");
if(sLCData==_T("0"))
m_sINEGCURR_Val=_T(" ($1.1)");
if(sLCData==_T("1"))
m_sINEGCURR_Val=_T(" -$1.1");
if(sLCData==_T("2"))
m_sINEGCURR_Val=_T(" $-1.1");
if(sLCData==_T("3"))
m_sINEGCURR_Val=_T(" $1.1-");
if(sLCData==_T("4"))
m_sINEGCURR_Val=_T(" $(1.1$)");
if(sLCData==_T("5"))
m_sINEGCURR_Val=_T(" -1.1$");
if(sLCData==_T("6"))
m_sINEGCURR_Val=_T(" 1.1-$");
if(sLCData==_T("7"))
m_sINEGCURR_Val=_T(" 1.1$-");
if(sLCData==_T("8"))
m_sINEGCURR_Val=_T(" -1.1 $ ");
if(sLCData==_T("9"))
m_sINEGCURR_Val=_T(" -$ 1.1 ");
if(sLCData==_T("10"))
m_sINEGCURR_Val=_T(" 1.1 $-");
if(sLCData==_T("11"))
m_sINEGCURR_Val=_T(" $ 1.1- ");
if(sLCData==_T("12"))
m_sINEGCURR_Val=_T(" $ -1.1 ");
if(sLCData==_T("13"))
m_sINEGCURR_Val=_T(" 1.1- $ ");
if(sLCData==_T("14"))
m_sINEGCURR_Val=_T(" ($ 1.1)");
if(sLCData==_T("15"))
m_sINEGCURR_Val=_T(" (1.1 $) ");



iLong= GetLocaleInfo( m_lcdi,LOCALE_SCURRENCY,lpLCData,250 );
lpLCData[iLong]=NULL;
m_sSCURRENCY_Val=lpLCData;

iLong= GetLocaleInfo( m_lcdi,LOCALE_SINTLSYMBOL,lpLCData,250 );
lpLCData[iLong]=NULL;
m_sSINTLSYMBOL_Val=lpLCData;

iLong= GetLocaleInfo( m_lcdi,LOCALE_SMONDECIMALSEP,lpLCData,250 );
lpLCData[iLong]=NULL;
m_sSMONDECIMALSEP_Val=lpLCData;

iLong= GetLocaleInfo( m_lcdi,LOCALE_SMONTHOUSANDSEP,lpLCData,250 );
lpLCData[iLong]=NULL;
m_sSMONTHOUSANDSEP_Val=lpLCData;

iLong= GetLocaleInfo( m_lcdi,LOCALE_SMONGROUPING,lpLCData,250 );
lpLCData[iLong]=NULL;
m_sSMONGROUPING_Val=lpLCData;

iLong= GetLocaleInfo( m_lcdi,LOCALE_ICURRDIGITS,lpLCData,250 );
lpLCData[iLong]=NULL;
m_sICURRDIGITS_Val=lpLCData;

iLong= GetLocaleInfo( m_lcdi,LOCALE_IINTLCURRDIGITS,lpLCData,250 );
lpLCData[iLong]=NULL;
m_sIINTLCURRDIGITS_Val=lpLCData;

iLong= GetLocaleInfo( m_lcdi,LOCALE_ICURRENCY,lpLCData,250 );
lpLCData[iLong]=NULL;
sLCData=lpLCData;
m_sICURRENCY_Val=_T(" ? ");
if(sLCData==_T("0"))
m_sICURRENCY_Val=_T("Prefix, no separation, for example $1.1 ");
if(sLCData==_T("1"))
m_sICURRENCY_Val=_T("Suffix, no separation, for example 1.1$ ");
if(sLCData==_T("2"))
m_sICURRENCY_Val=_T("Prefix, 1-character separation, for example $ 1.1 ");
if(sLCData==_T("3"))
m_sICURRENCY_Val=_T("Suffix, 1-character separation, for example 1.1 $ ");


Us saludo
Fernando Marin




"liuqinglong" escribió en el mensaje
news:

William GS wrote in message
news:091401c55362$92f35c50$
Hola a todos. Como puedo obtener todo lo especificado en
la configuracion regional? formato de fecha, formato de
numeros decimales, formato de moneda, etc.

Muchas gracias de antemano,
William GSG




email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida