Unicode(货币问题)

it2025-03-23  21

又是Unicode问题。 西班牙语系有20种分支。但大概有5,6中表达方法。 mvLCID=LCID Public   Function   FormatCurrency(CurVal   As   Double,   Optional   UseGrouping   As   Boolean   =   True,   Optional   ShowCSymbol   As   Boolean   =   True)   As   String       Dim   NumDigits                 As   Integer       Dim   LeadingZero             As   Integer       Dim   Grouping                   As   Integer       Dim   decSep                       As   String       Dim   thouSep                     As   String       Dim   negOrder                   As   Integer       Dim   posOrder                   As   Integer       Dim   cSymb                         As   String       Dim   posIntVal                 As   Double,   intStr   As   String       Dim   posDecVal                 As   Double,   decStr   As   String       Dim   negNum                       As   Boolean,   i   As   Integer       Dim   fCur                           As   String       NumDigits   =   CInt(pfGLI(LOCALE_IDIGITS))       LeadingZero   =   CInt(pfGLI(gliILZERO))       Grouping   =   CInt(Left(pfGLI(gliSGROUPING),   1))       decSep   =   Left(pfGLI(gliSDECIMAL),   1)       thouSep   =   Left(pfGLI(gliSTHOUSAND),   1)       negOrder   =   CInt(pfGLI(gliINEGCURR))       posOrder   =   CInt(pfGLI(gliICURRENCY))       cSymb   =   pfGLI(gliSCURRENCY)       If   Not   ShowCSymbol   Then   cSymb   =   ""       If   CurVal   <   0   Then   negNum   =   True       posIntVal   =   Abs(Fix(CurVal))       posDecVal   =   Abs(CurVal   -   Fix(CurVal))   *   (10   ^   NumDigits)       intStr   =   Format(posIntVal,   "#############################################")       decStr   =   Format(posDecVal,   String(NumDigits,   "0"))       If   UseGrouping   And   Grouping   >   0   And   Len(intStr)   >   Grouping   Then             '   Insert   the   ordinal   separators   in   the   integer   part   of   the   number             For   i   =   Grouping   To   Len(intStr)   Step   Grouping   +   1                   intStr   =   Left(intStr,   Len(intStr)   -   i)   +   thouSep   +   Right(intStr,   i)             Next       End   If       '   Final   format       If   negNum   Then             Select   Case   negOrder                   Case   0                         fCur   =   "("   +   cSymb   +   intStr   +   decSep   +   decStr   +   ")"                   Case   1                         fCur   =   "-"   +   cSymb   +   intStr   +   decSep   +   decStr                   Case   2                         fCur   =   cSymb   +   "-"   +   intStr   +   decSep   +   decStr                   Case   3                         fCur   =   cSymb   +   intStr   +   decSep   +   decStr   +   "-"                   Case   4                         fCur   =   "("   +   intStr   +   decSep   +   decStr   +   cSymb   +   ")"                   Case   5                         fCur   =   "-"   +   intStr   +   decSep   +   decStr   +   cSymb                   Case   6                         fCur   =   intStr   +   decSep   +   decStr   +   "-"   +   cSymb                   Case   7                         fCur   =   intStr   +   decSep   +   decStr   +   cSymb   +   "-"                   Case   8                         fCur   =   "-"   +   intStr   +   decSep   +   decStr   +   "   "   +   cSymb                   Case   9                         fCur   =   "-"   +   cSymb   +   "   "   +   intStr   +   decSep   +   decStr                   Case   10                         fCur   =   intStr   +   decSep   +   decStr   +   "   "   +   cSymb   +   "-"                   Case   11                         fCur   =   cSymb   +   "   "   +   intStr   +   decSep   +   decStr   +   "-"                   Case   12                         fCur   =   cSymb   +   "   -"   +   intStr   +   decSep   +   decStr                   Case   13                         fCur   =   intStr   +   decSep   +   decStr   +   "-   "   +   cSymb                   Case   14                         fCur   =   "("   +   cSymb   +   "   "   +   intStr   +   decSep   +   decStr   +   ")"                   Case   15                         fCur   =   "("   +   intStr   +   decSep   +   decStr   +   "   "   +   cSymb   +   ")"                   Case   Else                         fCur   =   "-"   +   cSymb   +   intStr   +   decSep   +   decStr             End   Select       Else             Select   Case   posOrder                   Case   0                         fCur   =   cSymb   +   intStr   +   decSep   +   decStr                   Case   1                         fCur   =   intStr   +   decSep   +   decStr   +   cSymb                   Case   2                         fCur   =   cSymb   +   "   "   +   intStr   +   decSep   +   decStr                   Case   3                         fCur   =   intStr   +   decSep   +   decStr   +   "   "   +   cSymb                   Case   Else                         fCur   =   cSymb   +   intStr   +   decSep   +   decStr             End   Select       End   If       FormatCurrency   =   Trim(fCur) End   Function Private   Function   pfGLI(reqInfo   As   GLITypes,   _       Optional   ByVal   bUnicode   As   Boolean   =   False)   As   String       Dim   aStr                           As   String       aStr   =   String(255,   Chr(0))       If   bUnicode   Then             GetLocaleInfoW   mvLCID,   reqInfo,   StrPtr(aStr),   255             pfGLI   =   aStr   'StrConv(aStr,   vbFromUnicode)       Else             GetLocaleInfo   mvLCID,   reqInfo,   aStr,   255             aStr   =   Left(aStr,   InStr(1,   aStr,   Chr(0))   -   1)             pfGLI   =   aStr       End   If End   Function '   This   just   makes   my   life   a   little   easier Private   Enum   GLITypes       gliICALENDARTYPE   =   &H1009       gliIOPTIONALCALENDAR   =   &H100B       gliICENTURY   =   &H24       gliICOUNTRY   =   &H5       gliICURRDIGITS   =   &H19       gliICURRENCY   =   &H1B       gliIDATE   =   &H21       gliIDAYLZERO   =   &H26       gliIDEFAULTCODEPAGE   =   &HB       gliIDEFAULTCOUNTRY   =   &HA       gliIDEFAULTLANGUAGE   =   &H9       gliIDIGITS   =   &H11       gliIINTLCURRDIGITS   =   &H1A       gliILANGUAGE   =   &H1       gliILDATE   =   &H22       gliILZERO   =   &H12       gliIMEASURE   =   &HD       gliIMONLZERO   =   &H27       gliINEGCURR   =   &H1C       gliINEGSEPBYSPACE   =   &H57       gliINEGSIGNPOSN   =   &H53       gliINEGSYMPRECEDES   =   &H56       gliIPOSSEPBYSPACE   =   &H55       gliIPOSSIGNPOSN   =   &H52       gliIPOSSYMPRECEDES   =   &H54       gliITIME   =   &H23       gliITLZERO   =   &H25       gliNOUSEROVERRIDE   =   &H80000000       gliS1159   =   &H28       gliS2359   =   &H29       gliSABBREVCTRYNAME   =   &H7       gliSABBREVDAYNAME1   =   &H31       gliSABBREVDAYNAME2   =   &H32       gliSABBREVDAYNAME3   =   &H33       gliSABBREVDAYNAME4   =   &H34       gliSABBREVDAYNAME5   =   &H35       gliSABBREVDAYNAME6   =   &H36       gliSABBREVDAYNAME7   =   &H37       gliSABBREVLANGNAME   =   &H3       gliSABBREVMONTHNAME1   =   &H44       gliSABBREVMONTHNAME10   =   &H4D       gliSABBREVMONTHNAME11   =   &H4E       gliSABBREVMONTHNAME12   =   &H4F       gliSABBREVMONTHNAME13   =   &H100F       gliSABBREVMONTHNAME2   =   &H45       gliSABBREVMONTHNAME3   =   &H46       gliSABBREVMONTHNAME4   =   &H47       gliSABBREVMONTHNAME5   =   &H48       gliSABBREVMONTHNAME6   =   &H49       gliSABBREVMONTHNAME7   =   &H4A       gliSABBREVMONTHNAME8   =   &H4B       gliSABBREVMONTHNAME9   =   &H4C       gliSCOUNTRY   =   &H6       gliSCURRENCY   =   &H14       gliSDATE   =   &H1D       gliSDAYNAME1   =   &H2A       gliSDAYNAME2   =   &H2B       gliSDAYNAME3   =   &H2C       gliSDAYNAME4   =   &H2D       gliSDAYNAME5   =   &H2E       gliSDAYNAME6   =   &H2F       gliSDAYNAME7   =   &H30       gliSDECIMAL   =   &HE       gliSENGCOUNTRY   =   &H1002       gliSENGLANGUAGE   =   &H1001       gliSGROUPING   =   &H10       gliSINTLSYMBOL   =   &H15       gliSLANGUAGE   =   &H2       gliSLIST   =   &HC       gliSLONGDATE   =   &H20       gliSMONDECIMALSEP   =   &H16       gliSMONGROUPING   =   &H18       gliSMONTHNAME1   =   &H38       gliSMONTHNAME10   =   &H41       gliSMONTHNAME11   =   &H42       gliSMONTHNAME12   =   &H43       gliSMONTHNAME2   =   &H39       gliSMONTHNAME3   =   &H3A       gliSMONTHNAME4   =   &H3B       gliSMONTHNAME5   =   &H3C       gliSMONTHNAME6   =   &H3D       gliSMONTHNAME7   =   &H3E       gliSMONTHNAME8   =   &H3F       gliSMONTHNAME9   =   &H40       gliSMONTHOUSANDSEP   =   &H17       gliSNATIVECTRYNAME   =   &H8       gliSNATIVEDIGITS   =   &H13       gliSNATIVELANGNAME   =   &H4       gliSNEGATIVESIGN   =   &H51       gliSPOSITIVESIGN   =   &H50       gliSSHORTDATE   =   &H1F       gliSTHOUSAND   =   &HF       gliSTIME   =   &H1E       gliSTIMEFORMAT   =   &H1003 End   Enum

转载于:https://www.cnblogs.com/HappyQQ/archive/2008/01/08/1030613.html

最新回复(0)