¿Cómo puedo cambiar un número a su valor en letra apretando un botón en una caja de texto?

Necesito saber como puedo hacer para que al escribir un numero y pulsart un botón en otra caja de texto me aparezca el mismo numero pero en lñetras, por ejemplo: "15", "quince", ademas debe ser desde 1 hasta 1'000,000, se que hay una sentencia que lo hace, pero no se cual es... Responde por favor.

1 Respuesta

Respuesta
1
Nunca había escuchado de la sentencia que haga eso. En todo caso de existir probablemente te lo devuelva en ingles.
Cuando necesite algo así la función la hice yo.
Bueno, muchas gracias por responder, en todo caso, me gustaría saber como puedo hacer porque es un trabajo y no tengo ni una pequeña idea de como hacerlo, puesto que no puede hacerse con if ni con choose case porque es hasta 1'000,000, ayudame por favor...
Te paso las 2 fx exportadas
//////////////
$PBExportHeader$f_numero_xxx_aletras.srf
global type f_numero_xxx_aletras from function_object
end type
forward prototypes
global function string f_numero_xxx_aletras (long ae_valor)
end prototypes
global function string f_numero_xxx_aletras (long ae_valor);//convierte un valor de tres cifras a letras
String ls_aunidad[] = {"UN","DOS","TRES","CUATRO","CINCO","SEIS","SIETE","OCHO","NUEVE","DIEZ","ONCE","DOCE","TRECE","CATORCE","QUINCE"}
String ls_acentena[] = {"CIENTO","DOSCIENTOS","TRESCIENTOS","CUATROCIENTOS","QUINIENTOS","SEISCIENTOS","SETECIENTOS","OCHOCIENTOS","NOVECIENTOS"}
String ls_adecena[] = {"DIECI","VEINTI","TREINTA","CUARENTA","CINCUENTA","SESENTA","SETENTA","OCHENTA","NOVENTA"}
Integer li_centena, li_decena, li_unidad, li_doble
String ls_linea;
IF ae_valor = 100 THEN
ls_linea = "CIEN "
ELSE
ls_linea = ""
li_centena = ae_valor / 100
li_doble = ae_valor - (li_centena*100)
li_decena = (ae_valor / 10) - (li_centena*10)
li_unidad = (ae_valor - (li_decena*10) - (li_centena*100));
IF li_centena > 0 THEN
ls_linea = ls_linea + ls_acentena[li_centena] + " "
END IF
IF li_doble > 0 THEN
IF li_doble = 20 THEN
ls_linea = ls_linea + "VEINTE "
ELSE
IF li_doble < 16 THEN
ls_linea = ls_linea + ls_aunidad[li_doble] + " " ;
ELSE
ls_linea = ls_linea + ls_adecena[li_decena]
IF li_decena > 2 AND li_unidad <> 0 THEN ls_linea = ls_linea + " Y "
IF li_unidad > 0 THEN ls_linea = ls_linea + ls_aunidad[li_unidad] + " "
IF li_unidad = 0 THEN ls_linea = ls_linea + " "
END IF
END IF
END IF
END IF
return ls_linea
end function
/////////////
*************
$PBExportHeader$f_numeros_a_letras.srf
global type f_numeros_a_letras from function_object
end type
forward prototypes
global function string f_numeros_a_letras (double ae_valor)
end prototypes
global function string f_numeros_a_letras (double ae_valor);String ls_linea, ls_valor, ls_parte_decimal
Long ll_numero,ll_millones,ll_miles,ll_unidades
Integer li_lugar_del_punto,li_decimales
ls_valor = String(ae_valor,"#########0.00")
ll_numero = Long(ae_valor)
li_lugar_del_punto = Pos(ls_valor,".")
//ls_parte_decimal = Right(ls_valor,len(ls_valor) - li_lugar_del_punto);
ls_parte_decimal = Right(ls_valor,2)
li_decimales = Integer(ls_parte_decimal)
ls_linea = ""
IF ll_numero = 0 THEN
ls_linea = "CERO "
ELSEIF ll_numero < 0 THEN
ls_linea = "MENOS "
ELSEIF ll_numero = 1 AND li_decimales = 0 THEN
ls_linea = "UN "
return ls_linea
ELSEIF ll_numero > 1 THEN
ls_linea = ""
END IF
ll_numero = Abs(ll_numero) //valor absoluto
ll_millones = ll_numero / 1000000
ll_miles = (ll_numero - (ll_millones*1000000)) / 1000
ll_unidades = ll_numero - ((ll_millones*1000000) + ll_miles * 1000)
IF ll_millones = 1 THEN
ls_linea = ls_linea + "UN MILLON "
ELSEIF ll_millones > 1 THEN
ls_linea = ls_linea + f_numero_xxx_aletras(ll_millones) + "MILLONES "
END IF
IF ll_miles = 1 THEN
ls_linea = ls_linea + "MIL "
ELSEIF ll_miles > 1 THEN
ls_linea = ls_linea + f_numero_xxx_aletras(ll_miles)+ "MIL "
END IF
IF ll_unidades > 0 THEN ls_linea = ls_linea + f_numero_xxx_aletras(ll_unidades)
IF li_decimales = 1 THEN ls_linea = ls_linea + "CON UNO"
IF li_decimales > 1 THEN
ls_linea = ls_linea + "CON " + f_numero_xxx_aletras(li_decimales)
IF Right(ls_linea,3) = "UN " THEN ls_linea = Left(ls_linea,len(ls_linea)-1) + "O"
END IF
return ls_linea
end function
*************
Hola...
Lo he probado, pero no reconoce $PBExportHeader$, ademas arroja 2 errores de sintaxis, no se como hacer para que funcione...
Las fx están exportadas con PB 7 pero hacelo simple, crea las funciones vos y copiales el código que te pase.
En cuanto al error de sintaxis, si haciendo lo que te puse arriba aparece pásame cual es.
Las fx andan.
Cerrá la pregunta, las preguntas activas impiden que entren nuevas

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas