¿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 de aldob
1
1
aldob, Ingeniero en Sistemas con amplia experiencia en desarrollo de...
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