Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

h1d3

Números por extenso

Recommended Posts

ALGUEM SABE COMO EU FAÇO PRA:ESCREVO UM NUMERO EM UM EDIT,E QUANDO ACABO EN OUTRO EDIT APAREÇE O MESMO NUMERO MAS ESCRITO POR EXTENSO,ALGUEM SABE COMO LIGO ESSA FUNÇÃO?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma forma seria usando esta UNIT:

 

unit Ext; interfacefunction extenso (valor: real): string; implementation usesSysUtils,  Dialogs;  function extenso (valor: real): string;varCentavos, Centena, Milhar, Milhao, Texto, msg: string;constUnidades: array[1..9] of string = ('Um', 'Dois', 'Tres', 'Quatro', 'Cinco',								   'Seis', 'Sete', 'Oito', 'Nove');Dez: array[1..9] of string = ('Onze', 'Doze', 'Treze', 'Quatorze', 'Quinze',							  'Dezesseis', 'Dezessete', 'Dezoito', 'Dezenove');Dezenas: array[1..9] of string = ('Dez', 'Vinte', 'Trinta', 'Quarenta',								  'Cinquenta', 'Sessenta', 'Setenta',								  'Oitenta', 'Noventa');Centenas: array[1..9] of string = ('Cento', 'Duzentos', 'Trezentos',								   'Quatrocentos', 'Quinhentos', 'Seiscentos',								   'Setecentos', 'Oitocentos', 'Novecentos'); function ifs(Expressao: Boolean; CasoVerdadeiro, CasoFalso: String): String;beginif Expressaothen Result:=CasoVerdadeiroelse Result:=CasoFalso;end; function MiniExtenso (trio: string): string;varUnidade, Dezena, Centena: string;beginUnidade:='';Dezena:='';Centena:='';if (trio[2]='1') and (trio[3]<>'0') thenbeginUnidade:=Dez[strtoint(trio[3])];Dezena:='';endelsebeginif trio[2]<>'0' then Dezena:=Dezenas[strtoint(trio[2])];if trio[3]<>'0' then Unidade:=Unidades[strtoint(trio[3])];end;if (trio[1]='1') and (Unidade='') and (Dezena='')then Centena:='cem'elseif trio[1]<>'0'then Centena:=Centenas[strtoint(trio[1])]else Centena:='';Result:= Centena + ifs((Centena<>'') and ((Dezena<>'') or (Unidade<>'')), ' e ', '')		 + Dezena + ifs((Dezena<>'') and (Unidade<>''),' e ', '') + Unidade;end; beginif (valor>999999.99) or (valor<0) thenbeginmsg:='O valor está fora do intervalo permitido.';msg:=msg+'O número deve ser maior ou igual a zero e menor que 999.999,99.';msg:=msg+' Se não for corrigido o número não será escrito por extenso.';showmessage(msg);Result:='';exit;end;if valor=0 thenbeginResult:='';Exit;end;Texto:=formatfloat('000000.00',valor);Milhar:=MiniExtenso(Copy(Texto,1,3));Centena:=MiniExtenso(Copy(Texto,4,3));Centavos:=MiniExtenso('0'+Copy(Texto,8,2));Result:=Milhar;if Milhar<>'' thenif copy(texto,4,3)='000' then  Result:=Result+' Mil Reais'else  Result:=Result+' Mil, ';if (((copy(texto,4,2)='00') and (Milhar<>'')   and (copy(texto,6,1)<>'0')) or (centavos=''))   and (Centena<>'') then Result:=Result+' e ';if (Milhar+Centena <>'') then Result:=Result+Centena;if (Milhar='') and (copy(texto,4,3)='001') thenResult:=Result+' Real'elseif (copy(texto,4,3)<>'000') then Result:=Result+' Reais';if Centavos='' thenbeginResult:=Result+'.';Exit;endelsebeginif Milhar+Centena='' then   Result:=Centavos  else   Result:=Result+', e '+Centavos;if (copy(texto,8,2)='01') and (Centavos<>'') thenResult:=Result+' Centavo.'elseResult:=Result+' Centavos.';end;end;end.

Precisaria somente criar, chamar e receber o nome por extenso... e ainda existe componentes que fazem isto, um deles seria o TExtenso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara brigado a atencao,mas tp so meio lrdo no delphi ainda,baxei o negocio q você flo tudo,mas tp tem como c fla +- como eu uso esse negocio e o codigo font?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom... Já instalou o componente ? Caso ainda não, vá em Component -> Install Component... -> Browse -> Selecione o arquivo .PAS -> Abrir -> Ok -> Compile -> Install (depois de instalar o componente, precisa deixar o .PAS sempre nesta pasta), deve de ter sido adicionado um componente na barra "Samples".

Adicione o componente no formulário desejado, depois:

Extenso1.Numero:=edit1.Text;edit2.Text:=Extenso.Extenso;

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara tp criei o labelext.pas dai joguei os negocio que c flo pra baxa na msm pasta certo,ai executei o componente,dei o browse la puis o pas,ai mandei compila,dai tp parece q deu uma atualizada na barra,mas nao apareceu nenhum componente novo,ta onde no samples?nm vi nd novo la

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se baixar o componente não precisa criar nada, caso utilize o fonte que passei no código acima, ai sim precisa criar um arquivo .PAS, mas não precisa instalar, somente se instala o componente...Qual a versão do seu delphi ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

certo vo tenta usa a unit,mas tp faco como?boto o codigo direto no form?ou en algum edit ou um label q vai aparece o extenso?>noob< XD~~

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.