Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Quitar y Agregar Ceros a la izquierda

473 views
Skip to first unread message

Daniel Flores

unread,
Jul 22, 2009, 7:11:55 PM7/22/09
to
Hola a todos, hace mucho tiempo que no escribo preguntado algo.

Bueno, las dos preguntas son:

1) Tengo una cadeana como la siguiente:
"12345" como transformarla en: "0000012345"

2) seria al reves de la primera:
tengo "0000012345" y la quiero transformar en "12345"

Se puede hacer esto??? Como???

Gracias a todos
Daniel Flores

Dario

unread,
Jul 22, 2009, 7:47:58 PM7/22/09
to
chrtran(cadena,"0","")

--
Dario David Puccio
El Cyber_Gaucho
www.chispazodetradicion.com.ar
Las Malvinas son Argentinas

"Daniel Flores" <dan...@hotmail.com> escribi� en el mensaje
news:ejWIQHyC...@TK2MSFTNGP04.phx.gbl...

Alex Vargas

unread,
Jul 22, 2009, 10:45:01 PM7/22/09
to
?PADL('12345',10,'0') = "0000012345"
?ALLTRIM(STR(VAL('0000012345'))) = "12345"

--
Alex A. Vargas
La ceiba, Honduras

Walter R. Ojeda Valiente

unread,
Jul 23, 2009, 12:42:59 AM7/23/09
to
En Clipper existe la funci�n StrZero() que hace justamente eso, agregarle
ceros a la izquierda a un n�mero.

Como en Visual FoxPro no existe, la puedes crear t�.

Function STRZERO
LParameters Numero, Longitud, Decimales
Local Valor_Devuelto

Longitud = iif(Type("LONGITUD") <> "N", 10, Longitud)
Decimales = iif(Type("DECIMALES") <> "N", 0, Decimales)
Valor_Devuelto = Ltrim(Str(Numero, Longitud, Decimales))
Valor_Devuelto = Replicate("0", Longitud - Len(Valor_Devuelto)) +
Valor_Devuelto

Return(Valor_Devuelto)
*
*

Aqu�, los tres par�metros son num�ricos. El primero es el n�mero al cual
deseas agregarle ceros. El segundo es la longitud total, ya contando los
ceros que se agregar�n. Por defecto supone que la longitud total ser� de 10
caracteres. El tercero es la cantidad de posiciones decimales que tendr� el
n�mero editado. Por defecto supone que no tendr� decimales, es decir que
ser� un n�mero entero.

Si quieres agregar los ceros a la derecha, entonces el Replicate() deber�a
ser el segundo sumando, no el primero como ahora.

Saludos.

Walter.


Abraham Uribe

unread,
Jul 23, 2009, 8:45:18 AM7/23/09
to

el chrtran puede causar da�os que pasa si la cadena es "00012035" lo
convertiria en "1235"
complementando lo que dijo el compa�ero Alex en otro hilo si los valores son
numericos se puede utilizar

trans(12345,'@L 9999999')

--
Abraham Uribe
Medellin - Colombia


"Dario" <dar...@hotmail.com> escribi� en el mensaje
news:e6MIrayC...@TK2MSFTNGP03.phx.gbl...

hhbernal

unread,
Jul 23, 2009, 9:30:31 AM7/23/09
to

Hola,

En visualfoxpro puedes hacer lo siguiente:

x = 1234

? PADR(x, 7, '0') && imprime 1234000
? PADL(x, 7, '0') && imprime 0001234

Saludos desde México, D.F.


Juan Carlos Flores

unread,
Jul 23, 2009, 9:31:22 AM7/23/09
to
Te timaron con esa copia de VFP, jeje.
Es broma.

Lo puedes hacer con PADL
?PADL("1234", 10, "0")

Saludos.

"Walter R. Ojeda Valiente" <wr...@hotmail.com> escribi� en el mensaje de
noticias:#dZVzh1C...@TK2MSFTNGP02.phx.gbl...

Juan Carlos Flores

unread,
Jul 23, 2009, 9:48:17 AM7/23/09
to
PADL para poner los ceros a la izquierda.

Y te hice esta funcion para eliminar los ceros a la izquierda.
?DeleteZeros("0000012345")


***************************************************
FUNCTION DeleteZeros(cCadena)
*****
** Funcion para quitar los ceros a la izquierda de una cadena de texto
******************************************************
IF TYPE("cCadena")<>"C"
MESSAGEBOX("El parametro enviado debe de ser una cadena de texto", 0+48,
"ERROR !!")
RETURN ""
ENDIF
nPos=0
FOR i=1 TO LEN(cCadena)
IF SUBSTR(cCadena,i,1)<>"0"
nPos=i-1
EXIT
ENDIF
ENDFOR
RETURN RIGHT(cCadena, LEN(cCadena)-nPos)
**********************************************************

Ya la gregu� a mis funciones personales y trabaja bien.

Saludos.

Juan Carlos Flores
Choluteca, Honduras
"Dario" <dar...@hotmail.com> escribi� en el mensaje de
noticias:e6MIrayC...@TK2MSFTNGP03.phx.gbl...

Luis Maria Guayan

unread,
Jul 23, 2009, 10:44:11 AM7/23/09
to
1) ? TRANSFORM(VAL("12345"), "@L 9999999999")

2) ? TRANSFORM(VAL("0000012345"))


--
Luis Mar�a Guay�n
Tucum�n, Argentina
________________________________
SysOp de www.PortalFox.com
Microsoft Visual FoxPro MVP
________________________________
La palabra imposible solo figura
en el diccionario de los tontos


"Daniel Flores" <dan...@hotmail.com> escribi� en el mensaje de
noticias:ejWIQHyC...@TK2MSFTNGP04.phx.gbl...

di por favor, luego gracias

unread,
Jul 24, 2009, 7:24:38 PM7/24/09
to
que pasa si la longitud de la variable cambia ya no es 10 si no 8 o 4,
mejer utilicen las propiedades de ese objeto
cuando viene un caracter
this.value=padl(ALLTRIM(this.value),this.maxlength,'0')
cuando viene un numero
this.value=padl(this.value,this.maxlength,'0')
solo hay que modificar la longitus maxima que debe de aceptar ese
objeto

Walter R. Ojeda Valiente

unread,
Jul 24, 2009, 11:02:22 PM7/24/09
to
Pues a la funci�n StrZero() le pasas la longitud y la cantidad de decimales
que deseas y ya est�.

Saludos.

Walter.


0 new messages