coelhorb Posted September 6, 2010 Share Posted September 6, 2010 A example script to translate numbers to word (in portuguese) portugues: este script escreve número por extenso expandcollapse popup#cs ---------------------------------------------------------------------------- AutoIt Version: 3.3.4.0 Author: Ricardo Bernardes Coelho Script Function: Escreve um dado valor por extenso #ce ---------------------------------------------------------------------------- ;Centena, Dezena, Unidade (CDU) Const $unidade_por_extenso[10] = ["","UM", "DOIS", "TRES", "QUATRO", "CINCO", "SEIS", "SETE", "OITO", "NOVE"] Const $dezena_por_extenso[10] = ["","DEZ", "VINTE", "TRINTA", "QUARENTA", "CINQUENTA", "SESSENTA", "SETENTA", "OITENTA", "NOVENTA"] Const $centena_por_extenso[10] = ["","CEM", "DUZENTOS", "TREZENTOS", "QUATROCENTOS", "QUINHENTOS", "SEISCENTOS", "SETECENTOS", "OITOCENTOS", "NOVECENTOS"] Const $especial_por_extenso[11] = ["","ONZE", "DOZE", "TREZE", "CATORZE", "QUINZE", "DEZESEIS", "DEZESSETE", "DEZOITO", "DEZENOVE", "CENTO"] Const $milhar[4] = ["", "MIL", "MILHÃO", "BILHÃO"] Const $milhares[4] = ["", "MIL", "MILHÕES", "BILHÕES"] Func ContaAtemMil($Valor) Dim $str_valor $str_valor = StringFormat("%03d", $Valor) Dim $centena, $dezena, $unidade $centena = StringMid($str_valor,1,1) $dezena = StringMid($str_valor,2,1) $unidade = StringMid($str_valor,3,1) $str_valor = "" If $centena <> "0" Then If $centena == "1" Then If $dezena+$unidade <> 0 Then $str_valor &= $especial_por_extenso[10]; & " E" ;cento e Else $str_valor = $centena_por_extenso[1] EndIf Else $str_valor &= $centena_por_extenso[$centena] EndIf EndIf If $dezena <> "0" Then If StringLen($str_valor) > 0 Then $str_valor &= " E " If $dezena == "1" Then If $unidade == "0" Then $str_valor &= $dezena_por_extenso[$dezena] Else $str_valor &= $especial_por_extenso[$unidade] EndIf Else $str_valor &= $dezena_por_extenso[$dezena] EndIf EndIf If $unidade <> "0" And $dezena<> "1" Then If StringLen($str_valor) > 0 Then $str_valor &= " E " $str_valor &= $unidade_por_extenso[$unidade] EndIf Return $str_valor EndFunc Func ValorPorExtenso($Valor) Dim $tamanho_valor = Ceiling(StringLen($Valor)/3) Dim $format_valor = "%0" & $tamanho_valor*3 & "d" Dim $str_valor = StringFormat($format_valor, $Valor) Dim $vector_valores[$tamanho_valor] For $i=0 To $tamanho_valor-1 $vector_valores[$tamanho_valor-1-$i] = StringMid($str_valor,$i*3+1,3) Next Dim $valor_por_extenso = "" For $i=$tamanho_valor-1 To 0 Step -1 $str_valor = ContaAtemMil($vector_valores[$i]) If $str_valor <> "" Then If $str_valor==$unidade_por_extenso[1] And $i == 1 Then ; se mil $str_valor = $milhar[1] Else If $vector_valores[$i] > 1 Then $str_valor &= " " & $milhares[$i] Else $str_valor &= " " & $milhar[$i] EndIf EndIf If StringLen($valor_por_extenso)>0 Then $valor_por_extenso &= " E " $valor_por_extenso &= $str_valor EndIf Next Return $valor_por_extenso EndFunc Dim $a = 158158 MsgBox(0, $a,ValorPorExtenso($a)) JCEF 1 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now