SoloCodigo

Programación General => Power Builder => Mensaje iniciado por: amuchut en Lunes 3 de Enero de 2005, 23:51

Título: Convertir Numeros En Texto
Publicado por: amuchut en Lunes 3 de Enero de 2005, 23:51
Que tal amigos!!!

Necesito convertir números en texto en power builder, alguien tiene un código que lo haga?

ej: 100 que lo pase a CIEN.

Desde ya muchas gracias.
Título: Re: Convertir Numeros En Texto
Publicado por: Soultaker en Martes 4 de Enero de 2005, 00:13
Hey amuchut no se porque pero me parece que esa es alguna tarea que te han dejado y quieres que otros te lo hagan, si sabes programar hacer eso es facil, no es tan complicado, solo tienes que manejar los miles, centenas, decenas y unidades de un numero.

 :comp:
Título: Re: Convertir Numeros En Texto
Publicado por: paul_illing en Martes 4 de Enero de 2005, 05:07
Hola amuchut soy paúl Illingworth

veras la funcion que te envio más abajo soluciona tu problema de explico lo que tienes que hacer:

1. tienes que crear una función con el nombre que quieras (ej. f_valor_letras)
2. tiene que retornar un String (return value String)
3. Pass by - Value
4. Argument type - Decimal
5. argument name - adc_valor
 y listo solo tienes que usar esa función.


//funcion para cambiar de número a letras   *****paúl Illingworth *****

string lsa_unidad[] = {"uno","dos","tres","cuatro","cinco","seis","siete","ocho","nueve"}
string lsa_subdec[] = {"once","doce","trece","catorce","quince","dieciseis","diecisiete","dieciocho","diecinueve"}
string lsa_decena[] = {"diez","veinte","treinta","cuarenta","cincuenta","sesenta","setenta","ochenta","noventa"}
string lsa_centena[] = {"ciento","doscientos","trescientos","cuatrocientos","quinientos","seiscientos","setecientos","ochocientos","novecientos"}
integer i, li_labv, lia_valor[20]
string ls_valor, ls_vl
ls_valor = string(Truncate (adc_valor,0))
ls_valor = fill(' ',20 - len(ls_valor)) + ls_valor
for i=20 to 1 step -1
   if mid(ls_valor,i,1) = ' ' then
      li_labv=20 - i
      exit
   end if
   lia_valor[20 - i + 1] = integer(mid(ls_valor,i,1))
end for

for i = li_labv + 1 to 20
   lia_valor=0
end for
   
ls_vl = ''
for i=1 to li_labv
   CHOOSE CASE i
   CASE 4,10
      IF lia_valor+lia_valor[i+1]+lia_valor[i+2] <> 0 THEN ls_vl = 'mil ' + ls_vl
   CASE 7
      IF lia_valor=1 THEN ls_vl = 'millon ' + ls_vl else ls_vl = 'millones ' + ls_vl
   END CHOOSE
   CHOOSE CASE i
   CASE 1,4,7,10
      IF lia_valor=0 THEN CONTINUE
      IF lia_valor[I+1]=1 THEN
         ls_vl=lsa_subdec[lia_valor]+' '+ls_vl
      ELSE
         IF lia_valor=1 AND i > 1 THEN
            IF i=4 or i=7 THEN ls_vl = "un " + ls_vl
         ELSE
            IF lia_valor[i+1]=0 THEN
               ls_vl=     lsa_unidad[lia_valor]+' '+ls_vl
            ELSE
               ls_vl='y '+lsa_unidad[lia_valor]+' '+ls_vl
            END IF
         END IF
      END IF
   case 2,5,8,11
      IF (lia_valor=1 AND lia_valor[i - 1] <> 0) OR lia_valor=0 THEN CONTINUE
      ls_vl=lsa_decena[lia_valor]+' '+ls_vl
   case 3,6,9,12
      IF lia_valor=0 THEN CONTINUE
      IF lia_valor=1 AND lia_valor[i - 1]=0 AND lia_valor[i - 2]=0 THEN
         ls_vl="cien"+' '+ls_vl
      ELSE
         ls_vl=lsa_centena[lia_valor]+' '+ls_vl
      END IF
   END CHOOSE
END FOR
ls_vl=Upper ( left(ls_vl,1) ) + mid(ls_vl,2) + ' 00/100'
return ls_vl   

//fin de la función


pd. Visita la página de mi empresa esta muy interesante
http://www.jbmconsultores.com (http://www.jbmconsultores.com)

Att.
Paúl Illingworth
Ecuador - Sur América
Tungurahua - Ambato

Avisame si te sirvió o si tienes una duda te la responderé.
Título: Re: Convertir Numeros En Texto
Publicado por: mateamargo en Jueves 20 de Enero de 2005, 16:36
En la página www.powerbuilder.org (http://www.powerbuilder.org) hay un código publicado por uno de los usuarios que hace eso. También en www.lawebdelprogramador.com (http://www.lawebdelprogramador.com).
Saludos.