Rutina para obtener la configuracion regional de Windows mediante API.
DIMENSION aDatos(1) ? GetConfiRegi( @aDatos ) DISPLAY MEMORY LIKE aDatos *------------------------------------------------------- * Retorna en una array pasado por referencia, algunos * valores de la configuración regional * PARAMETROS: aDatos * USO: DIMENSION aDatos(1) * GetConfiRegi( @aDatos ) * DEVUELVE: aDatos(1) = Símbolo decimal * aDatos(2) = Símbolo separador de miles * aDatos(3) = Número de dígitos decimales * aDatos(4) = Símbolo de signo negativo * aDatos(5) = Formato de números negativos *------------------------------------------------------- FUNCTION GetConfiRegi(aDatos) #DEFINE LOCALE_USER_DEFAULT 0x400 && 1024 #DEFINE LOCALE_SDECIMAL 0xE #DEFINE LOCALE_STHOUSAND 0xF #DEFINE LOCALE_IDIGITS 0x11 #DEFINE LOCALE_SNEGATIVESIGN 0x51 #DEFINE LOCALE_INEGNUMBER 0x1010 LOCAL sRetval AS STRING, nRET AS LONG IF PCOUNT() < 1 THEN RETURN .F. ENDIF DECLARE LONG GetLocaleInfo IN WIN32API LONG LOCALE, ; LONG LCTYPE, STRING LPLCDATA, LONG CCHDATA DIMENSION aDatos(5) FOR nRET = 1 TO 5 m.aDatos(nRET) = "" NEXT m.sRetval = REPLICATE(CHR(0),256) * Símbolo decimal m.nRET = GetLocaleInfo(LOCALE_USER_DEFAULT, ; LOCALE_SDECIMAL, @sRetval, LEN(m.sRetval)) IF m.nRET > 0 THEN m.aDatos(1) = LEFT(m.sRetval,m.nRET-1) ENDIF m.sRetval = REPLICATE(CHR(0),256) * Símbolo separador de miles m.nRET = GetLocaleInfo(LOCALE_USER_DEFAULT, ; LOCALE_STHOUSAND, @sRetval,LEN(m.sRetval)) IF m.nRET > 0 THEN m.aDatos(2) = LEFT(m.sRetval,m.nRET-1) ENDIF m.sRetval = REPLICATE(CHR(0),256) * Número de dígitos decimales m.nRET = GetLocaleInfo(LOCALE_USER_DEFAULT, ; LOCALE_IDIGITS, @sRetval,LEN(m.sRetval)) IF m.nRET > 0 THEN m.aDatos(3) = LEFT(m.sRetval,m.nRET-1) ENDIF m.sRetval = REPLICATE(CHR(0),256) * Símbolo de signo negativo m.nRET = GetLocaleInfo(LOCALE_USER_DEFAULT, ; LOCALE_SNEGATIVESIGN, @sRetval,LEN(m.sRetval)) IF m.nRET > 0 THEN m.aDatos(4) = LEFT(m.sRetval,m.nRET-1) ENDIF m.sRetval = REPLICATE(CHR(0),256) * Formato de números negativos m.nRET = GetLocaleInfo(LOCALE_USER_DEFAULT, ; LOCALE_SNEGATIVESIGN, @sRetval,LEN(m.sRetval)) IF m.nRET > 0 THEN m.aDatos(5) = LEFT(m.sRetval,m.nRET-1) DO CASE CASE m.aDatos(5) = "0" m.aDatos(5) = "(1.1)" CASE m.aDatos(5) = "1" m.aDatos(5)= " -1.1" CASE m.aDatos(5) = "2" m.aDatos(5) = "- 1.1" CASE m.aDatos(5) = "3" m.aDatos(5) = "1.1-" CASE m.aDatos(5) = "4" m.aDatos(5) = "1.1 -" ENDCASE ENDIF ENDFUNC *-------------------------------------------------------
No hay comentarios. :
Publicar un comentario
Los comentarios son moderados, por lo que pueden demorar varias horas para su publicación.