FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Dudas al convertir numero en letra y centavos
Hola amigos tengo un dilema resulta que quiero pasar una cantidad numerica a letras por ejemplo $12.50 Doce con cincuenta centavos, ya pude hacer que me aparesca la cifra con letra pero ahora resulta que no veo la forma para que aparesca la palabra centavos cuando halla centavos en la cifra les anexo mi codigo que estoy usando.
Código:
function Deletrear(numero: real) : string; var letras: TLetras; begin letras := TLetras.Create(nil); try letras.Numero := numero; Result := letras.AsString; finally letras.Free; end; end; procedure TAlta_factura.Button3Click(Sender: TObject); var n: String; begin n:= Deletrear(StrToFloat(Edit10.Text) ); label5.Caption:= (n); end; |
#2
|
||||
|
||||
¿Que es realmente lo que deseas hacer?
¿Covertir un numero al tipo de dato String? Cita:
Cita:
Saludos..
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
|
#3
|
|||
|
|||
Gracias por responder rgstuamigo lo que en si yo quiero es similar a esto
12.50 a Doce con cincuenta centavos en si eso es lo que quiero. obtener son los centavos en letra. |
#4
|
||||
|
||||
Cita:
De todas formas en internet vas a encontrar miles de referencias de como hacerlo o componentes que ya te hacen eso por ejemplo(aqui,aqui,aqui,etc). Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Última edición por rgstuamigo fecha: 24-11-2009 a las 13:58:33. |
#5
|
||||
|
||||
Mírate esta función, creo que es la que mencionas que había en el Club:
Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
#6
|
|||
|
|||
Numeros en Letra - Rufo
Rufo he usado ese codigo y me tome el atrevimiento de agregarle una modificacion al mismo ( no pedi permiso al autor lo cual es incorrecto y voy a corregir esa situacion) para que escriba los centavos de la siguiente forma,
166.23 ciento ........ con veintitres ctvos o ciento ........ con 23/100 si te sirve enviame un correo a la direccion dao_ ar@yahoo. com y te lo envio. Última edición por marcoszorrilla fecha: 23-11-2009 a las 15:17:58. |
#7
|
||||
|
||||
He incluido espacios en la dirección de correo para evitar que sea capturado por los especialistas del correo basura, por otra parte es de obligado cumplimiento en estos foros, publicar cualquier modificación o ampliación de código para que todo el mundo pueda disfrutar de los posibles beneficios de dichas modificaciones, por lo tanto no debe de contestarse a cuestiones de interés general por medio del correo privado, sino utilizando los foros que brindan su espacio para estos menesteres.
Gracias por vuestra comprensión. Nota de Moderación. Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
#8
|
|||
|
|||
Numeros en Letra - M.Zorrilla
Le envie el codigo a su autor el Sr. Carlos Garcia Trujillo (cgar1136@yahoo.com) para que valore las modificaciones y lo publique si lo desea.
Atte Daniel |
#9
|
|||
|
|||
Gracias amigos por sus respuestas pero sigo igual ando un poco atolondrado en esto ya que puse el codigo que me anexaron en mi pregunta pero no sale si me pudieran decir que onda con el codigo por que lo pongo tal y como es pero me marca error, si no es mucho pedir me pueden decir como ponerlo y como llamarlo y gracias de antemano.
|
#10
|
||||
|
||||
Ejemplo de uso:
Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
#11
|
|||
|
|||
Gracias amigo marcoszorrilla pero ya tengo un codigo que es este
Código:
Function CantidadEnLetra(curCantidad: Currency; MonNal: integer): String; var i: integer; Cantidad, Centavos: Currency; BloqueCero, NumeroBloques, Digito: Byte; PrimerDigito, SegundoDigito, TercerDigito: Byte; Resultado, Temp, strCentavos, Bloque: String; Unidades: Array[0..28] of String; Decenas: Array[0..8] of String; Centenas: Array[0..8] of String; begin Unidades[0] := 'UN'; Unidades[1] := 'DOS'; Unidades[2] := 'TRES'; Unidades[3] := 'CUATRO'; Unidades[4] := 'CINCO'; Unidades[5] := 'SEIS'; Unidades[6] := 'SIETE'; Unidades[7] := 'OCHO'; Unidades[8] := 'NUEVE'; Unidades[9] := 'DIEZ'; Unidades[10] := 'ONCE'; Unidades[11] := 'DOCE'; Unidades[12] := 'TRECE'; Unidades[13] := 'CATORCE'; Unidades[14] := 'QUINCE'; Unidades[15] := 'DIECISÉIS'; Unidades[16] := 'DIECISIETE'; Unidades[17] := 'DIECIOCHO'; Unidades[18] := 'DIECINUEVE'; Unidades[19] := 'VEINTE'; Unidades[20] := 'VEINTIUNO'; Unidades[21] := 'VEINTIDÓS'; Unidades[22] := 'VEINTITRÉS'; Unidades[23] := 'VEINTICUATRO'; Unidades[24] := 'VEINTICINCO'; Unidades[25] := 'VEINTISÉIS'; Unidades[26] := 'VEINTISIETE'; Unidades[27] := 'VEINTIOCHO'; Unidades[28] := 'VEINTINUEVE'; Decenas[0] := 'DIEZ'; Decenas[1] := 'VEINTE'; Decenas[2] := 'TREINTA'; Decenas[3] := 'CUARENTA'; Decenas[4] := 'CINCUENTA'; Decenas[5] := 'SESENTA'; Decenas[6] := 'SETENTA'; Decenas[7] := 'OCHENTA'; Decenas[8] := 'NOVENTA'; Centenas[0] := 'CIENTO'; Centenas[1] := 'DOSCIENTOS'; Centenas[2] := 'TRESCIENTOS'; Centenas[3] := 'CUATROCIENTOS'; Centenas[4] := 'QUINIENTOS'; Centenas[5] := 'SEISCIENTOS'; Centenas[6] := 'SETECIENTOS'; Centenas[7] := 'OCHOCIENTOS'; Centenas[8] := 'NOVECIENTOS'; Cantidad := Trunc(curCantidad); Centavos := (curCantidad - Cantidad) * 100; NumeroBloques := 1; Repeat PrimerDigito := 0; SegundoDigito := 0; TercerDigito := 0; Bloque := ''; BloqueCero := 0; For i := 1 To 3 do begin Digito := Round(Cantidad) Mod 10; If Digito <> 0 Then begin Case i of 1: begin Bloque := ' ' + Unidades[Digito - 1]; PrimerDigito := Digito; end; //case 1 2: begin If Digito <= 2 Then begin Bloque := ' ' + Unidades[(Digito * 10 + PrimerDigito - 1)]; end Else begin If PrimerDigito <> 0 then Temp := ' Y' else Temp := ''; Bloque := ' ' + Decenas[Digito - 1] + Temp + Bloque; End; //if SegundoDigito := Digito; end; //case 2 3: begin If (Digito = 1) and (PrimerDigito = 0) and (SegundoDigito = 0) then Temp := 'CIEN' else Temp := Centenas[Digito-1]; Bloque := ' ' + Temp + Bloque; TercerDigito := Digito; end; //case 3 End; //case end Else begin BloqueCero := BloqueCero + 1; End; // If Digito <>0 Cantidad := Int(Cantidad / 10); If Cantidad = 0 Then begin Break; End; // If Cantidad=0 end; //for Case NumeroBloques of 1: Resultado := Bloque; 2: begin if BloqueCero = 3 then Temp := '' else Temp := ' MIL'; Resultado := Bloque + Temp + Resultado; end; //case 2 3: begin If (PrimerDigito = 1) and (SegundoDigito = 0) and (TercerDigito = 0) then Temp := ' MILLON' else Temp := ' MILLONES'; Resultado := Bloque + Temp + Resultado; end; //case 3 End; //case NumeroBloques := NumeroBloques + 1; Until Cantidad = 0; //repeat case MonNal of 0: begin If curCantidad > 1 then Temp := ' CENTAVOS ***' else Temp := ' CENTAVO ***'; CantidadEnLetra := Resultado + Temp; end; 1: begin If curCantidad > 1 then Temp := ' PESOS ' else Temp := ' PESO '; if Centavos=0 then strCentavos := '' else strCentavos := 'CON '+CantidadEnLetra(Centavos, 0); CantidadEnLetra := 'SON: *** ' + Resultado + Temp + strCentavos; end; 2: begin If curCantidad > 1 then Temp := ' DLLS ' else Temp := ' DOLAR '; if Centavos=0 then strCentavos := '' else strCentavos := 'CON '+CantidadEnLetra(Centavos, 0); CantidadEnLetra := 'SON: *** ' + Resultado + Temp + strCentavos; end; end; End; Código:
var i: string; begin i:= CantidadEnLetra(StrToFloat(Edit1.Text) ); label1.Caption:= (i); end; |
#12
|
||||
|
||||
tal vez te falta convertir el punto a coma
Seguramente te marca error porque en tu edit estas capturando 123.50 en vez de 123,50 por eso te marca el error si capturas una cantidad manualmente como 123,50 veras que la función de contraveneno funciona y eso te lo aseguro porque yo tambien use su función pero no me acordaba que hay que convertir el punto decimal a coma para que muestre los centavos si no quieres hacer uso de la funcion strFormatDecimal validar que solo te permita capturar coma en vez de punto decimal
esta función lo que hece es convertir el punto decimal a coma
asi la llamas
y luego llamar la función CantidadEnLetra
o tu problema es ese o estas haciendo mal uso de los datos porque si es eso deberias analizar lo que hace el codigo... saludos!!!
__________________
el cielo me dio un cariño sin merecerlo... chimikuilo!!! |
#13
|
|||
|
|||
Gracias amigos ya quedo listo.
|
#14
|
||||
|
||||
pregunta!
por pura curiosidad que era lo que estabas haciendo mal que no te arrojaba el resultado?
saludos.
__________________
el cielo me dio un cariño sin merecerlo... chimikuilo!!! |
#15
|
|||
|
|||
ok amigos les voy aponer mi codigo ya funcionando del cual les agradesco mucho sus contestaciones.
Código:
procedure TAlta_factura.Button1Click(Sender: TObject); var no1,no2:double; no3,no4:real; begin if (edit4.text='')then edit4.Text:='0'; if edit6.text='' then edit6.Text:='0'; no1:=strtofloat(edit4.Text); no2:=strtofloat(edit6.Text); edit7.Text:=formatfloat('0.00',no1+no2); no3:=strtofloat(edit10.Text); edit8.text:=formatfloat('0.00',no3/1.15); no4:=strtofloat(edit8.Text); edit9.Text:=formatfloat('0.00',no4*0.15); label5.Caption:=CantidadEnLetra(StrtoFloat(edit10.Text),1); end; |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
45 Centavos | enecumene | Humor | 5 | 23-10-2008 17:51:23 |
Como convertir numero entero en letra | kurono | Varios | 2 | 23-01-2008 05:10:39 |
Convertir numero en cadena | rex | JAVA | 7 | 25-10-2007 03:28:11 |
Convertir Numero a Letras... en frances | jcarteagaf | Varios | 4 | 11-09-2007 19:23:45 |
De número a letra | samame | Varios | 1 | 10-03-2004 17:31:41 |
|