QUITAR ESPACIOS EN BLANCO DE UN ARCHIVO TEXTO.

5,109 views
Skip to first unread message

Roberto Matarrita

unread,
Aug 3, 2011, 12:07:38 PM8/3/11
to publice...@googlegroups.com
Buenos días amigos, tengo el siugiente caso.
Estoy haciendo una aplicación que genra un archivo texto con la información que debe enviarse al banco para ser cobrada.
Esta información se guarda en una tabla

Roberto Matarrita

unread,
Aug 3, 2011, 12:38:57 PM8/3/11
to publice...@googlegroups.com
Buenos días amigos. Tengo el siguiente caso.
Confeccioné un proceso que genera un archivo texto con la información que se envía al banco para que sea cobrada.
Existe una tabla con dos registros, uno tiene una longitud de 208 caracteres y el otro campo 106. Lo confeccioné de esta forma porque la longitu máxima para un registro es de 255 caracteres.
 
El problema que tengo es que cuando genero el archivo texto me queda un espacio en blanco entre el registro uno y el dos y esto no puede ser, deben ir todos los campos seguidos. Igual al final del registro me quedan espacios en blanco.
 
Ejemplo.
Campo1 000123robertomatarrita23900.004444.00  campo 2000000.000009.00COSTA RICA
 
Cuando se realiza el copy to archivo type sdf el registro me queda excelente todo pegado, pero al final del registro me quedan espacios en blanco y la idea es que al final de Costa Rica exista el carrier return y no queden espacios en blanco.
 
En buena teoria el registro queda 000123robertomatarrita23900.004444.002000000.000009.00COSTA RICA_______________ estas lineas serian los espacios en blanco que no deben quedar.
 
Ya probé con copy  to xxxxxx delimited blank no tengo problema alguno al final del registro porque después de la A de Costa Rica no quedan espacios en blanco. Pero el registro queda de la siguiente forma.
 
000123robertomatarrita23900.004444.00 2000000.000009.00COSTA RICA  Me queda un espacio en blanco entre el registro uno y el registro dos y eso no puede ser.
 
En resumen todos los registros deben ir pegados y sin espacios en blanco al final.
 
Alguna solución.
 
 
Probé tambien haciendo un campo memo y guardar los registros pero no funcionó tampoco.
 
Roberto Matarrita
Costa Rica.
 
 

Hugo C.

unread,
Aug 3, 2011, 12:54:10 PM8/3/11
to Comunidad de Visual Foxpro en Español
intenta algo como esto.

luego de generar el archivo,


lcQuitar = " " && ojo, puede se otro caracter
lcCadena = FILETOSTR("MiArchivo,txt")
lcCadena = STRTRAN(lcCadena, lcQuitar, "")
STRTOFILE(lcCadena, "MiArchivo_2,txt")


Saludos.

On 3 ago, 10:38, Roberto Matarrita <rmatar...@gmail.com> wrote:
> Buenos días amigos. Tengo el siguiente caso.
> Confeccioné un proceso que genera un archivo texto con la información que se
> envía al banco para que sea cobrada.
> Existe una tabla con dos registros, uno tiene una longitud de 208 caracteres
> y el otro campo 106. Lo confeccioné de esta forma porque la longitu máxima
> para un registro es de 255 caracteres.
>
> El problema que tengo es que cuando genero el archivo texto me queda un
> espacio en blanco entre el registro uno y el dos y esto no puede ser, deben
> ir todos los campos seguidos. Igual al final del registro me quedan espacios
> en blanco.
>
> Ejemplo.
> Campo1 000123robertomatarrita23900.004444.00  campo 2000000.000009.00COSTA
> RICA
>
> Cuando se realiza el *copy to archivo type sdf* el registro me queda
> excelente todo pegado, pero al final del registro me quedan espacios en
> blanco y la idea es que al final de Costa Rica exista el carrier return y no
> queden espacios en blanco.
>
> En buena teoria el registro queda
> 000123robertomatarrita23900.004444.002000000.000009.00COSTA
> RICA_______________ estas lineas serian los espacios en blanco que no deben
> quedar.
>
> Ya probé con *copy  to xxxxxx delimited blank* no tengo problema alguno al

Roberto Matarrita

unread,
Aug 3, 2011, 1:21:53 PM8/3/11
to publice...@googlegroups.com
Disculpa Hugo se me olvidó mensionar que en el registro tambien hay espacios en blanco, el problema es cuando se junta el campo uno con el campo dos, ahi es donde queda el espacio que no debe ir y por lo consiguiente al final tambien están los espacios.
 
Ejemplo
000018999.00ROBERTO MATARRITA         66666.00000000Costa Rica       89.008888800 este espacio es el que no debe existir que pertenece al campo dos del rgistro 6666666.0099999990002
 
No se si me explico
 
Roberto

Roberto Matarrita

unread,
Aug 3, 2011, 1:48:11 PM8/3/11
to publice...@googlegroups.com
Hugo vieras que si me funciona a medias.
Si pude quitar los espacios al final del registro. Pero el problema es que el registro contiene varios espacios en blanco por la filosofia de los datos que se envian y me quita tambien estos espacios cosa que no tiene que ser así. El punto es como quitar ese espacio en blanco que me queda.
 
Roberto
Costa Rica

Alejandro Villarreal

unread,
Aug 3, 2011, 2:07:10 PM8/3/11
to publice...@googlegroups.com
Roberto realiza un recorrido de toda la tabla y utiliza las funciones FCREATE() para crear el archivo al inicio del recorrido , FWRITE() para escribir los datos por cada registro y FCLOSE() para cerrar el archivo al finalizar la tabla. y listo tienes tu archivo para acreditación de haberes.

Saludos,
Alejandro Villarreal

Hugo C.

unread,
Aug 3, 2011, 2:13:42 PM8/3/11
to Comunidad de Visual Foxpro en Español
Tal vez con algo como esto

COPY TO x.txt DELIMITED WITH _ WITH CHARACTER ';'
lcStr = FILETOSTR("x.txt")
lcStr = CHRTRAN(lcStr, ";_", "")
STRTOFILE(lcStr, "x2.txt")
MODIFY FILE x2.txt

Saudos.

On 3 ago, 11:48, Roberto Matarrita <rmatar...@gmail.com> wrote:
> Hugo vieras que si me funciona a medias.
> Si pude quitar los espacios al final del registro. Pero el problema es que
> el registro contiene varios espacios en blanco por la filosofia de los datos
> que se envian y me quita tambien estos espacios cosa que no tiene que ser
> así. El punto es como quitar ese espacio en blanco que me queda.
>
> Roberto
> Costa Rica
>
> El 3 de agosto de 2011 19:21, Roberto Matarrita <rmatar...@gmail.com>escribió:
>
>
>
> > Disculpa Hugo se me olvidó mensionar que en el registro tambien hay
> > espacios en blanco, el problema es cuando se junta el campo uno con el campo
> > dos, ahi es donde queda el espacio que no debe ir y por lo consiguiente al
> > final tambien están los espacios.
>
> > Ejemplo
> > 000018999.00ROBERTO MATARRITA         66666.00000000Costa Rica
> > 89.008888800 este espacio es el que no debe existir que pertenece al campo
> > dos del rgistro 6666666.0099999990002
>
> > No se si me explico
>
> > Roberto
>
> >> > Costa Rica.- Ocultar texto de la cita -
>
> - Mostrar texto de la cita -

Roberto Matarrita

unread,
Aug 3, 2011, 7:04:57 PM8/3/11
to publice...@googlegroups.com
Disculpen se me olvidó mencionr que estoy utilizando Fox para DOS porque es un sistema que hice hace 20 años.
 
Roberto

HernanCano

unread,
Aug 4, 2011, 1:03:36 AM8/4/11
to Comunidad de Visual Foxpro en Español
Hola, Roberto.
Viendo el archivo text4.txt (está en el otro tema) no veo que suceda
lo que dices de que "al final queda un espacio"; yo veo que al final
del registro hay "carriage return" (un chr(13) para cambio de
registrro, como normalmente debe ser cuando se ejecuta "copy to ...
sdf").

No necesitabas otro "debate" para aclarar que es en DOS: de hecho la
respu es la misma tanto para DOS como para VFP y para FPW, lo que ya
habías aclarado en este "debate".

On 3 ago, 11:38, Roberto Matarrita <rmatar...@gmail.com> wrote:
> Buenos días amigos. Tengo el siguiente caso.
> Confeccioné un proceso que genera un archivo texto con la información que se
> envía al banco para que sea cobrada.
> Existe una tabla con dos registros, uno tiene una longitud de 208 caracteres
> y el otro campo 106. Lo confeccioné de esta forma porque la longitu máxima
> para un registro es de 255 caracteres.
>
> El problema que tengo es que cuando genero el archivo texto me queda un
> espacio en blanco entre el registro uno y el dos y esto no puede ser, deben
> ir todos los campos seguidos. Igual al final del registro me quedan espacios
> en blanco.
>
> Ejemplo.
> Campo1 000123robertomatarrita23900.004444.00  campo 2000000.000009.00COSTA
> RICA
>
> Cuando se realiza el *copy to archivo type sdf* el registro me queda
> excelente todo pegado, pero al final del registro me quedan espacios en
> blanco y la idea es que al final de Costa Rica exista el carrier return y no
> queden espacios en blanco.
>
> En buena teoria el registro queda
> 000123robertomatarrita23900.004444.002000000.000009.00COSTA
> RICA_______________ estas lineas serian los espacios en blanco que no deben
> quedar.
>
> Ya probé con *copy  to xxxxxx delimited blank* no tengo problema alguno al

Roberto Matarrita

unread,
Aug 4, 2011, 1:44:13 PM8/4/11
to publice...@googlegroups.com
Gracias Hernan por tu ayuda. El problema es que si te vas al final del registro y pulsas la flecha hacia la izquierda, te das cuenta de que hay espacios en blanco, esos son los que deseo quitar. Si yo utilizo el delimited blank no me quedan esos espacios, pero me incluye un espacio entre registro y registro. En todo caso voy a darle otra revisada y cualquier cosa te solicito ayuda.
 
Gracias por tu amabilidad.
 
Roberto

Intel Man

unread,
Aug 4, 2011, 1:53:44 PM8/4/11
to publice...@googlegroups.com
Hola, como ya te han dicho tendrias que hacerlo con funciones de manejo de archivo a bajo nivel como el fcreate(), fopen(), fread() fget(), etc. Y con esas funciones creas tu archivo como lo necesitas. Busca en la ayuda esas funciones.

Ya que con el copy to vas a estar dando vueltas en lo mismo.

Saludos



Date: Thu, 4 Aug 2011 19:44:13 +0200
Subject: Re: [vfp] Re: QUITAR ESPACIOS EN BLANCO DE UN ARCHIVO TEXTO.
From: rmat...@gmail.com
To: publice...@googlegroups.com

Roberto Matarrita

unread,
Aug 4, 2011, 2:40:36 PM8/4/11
to publice...@googlegroups.com
Si ya lo hice con esas funciones y me funcionó, muchas gracias.
 
Roberto
Costa Rica.

HernanCano

unread,
Aug 4, 2011, 3:38:05 PM8/4/11
to Comunidad de Visual Foxpro en Español
Roberto:
"intel":

Me ratifico en lo que mencioné: ""copy to ...sdf" cada registro queda
con final de línea normal"; ésto ya lo previsualizado en el text4.txt,
lo acabo de corroborar abriéndolo con el NotePad:

Por si no has caido: al final de cada """""registro"""""" sí hay fin
de línea (también hay espacios ---no lo negaré nunca--- los del último
campo, pero lo que digo es que) sí hay fin de línea entre registro y
registro. Eso no hay
que...............mencionarlo............desconfiarlo................
si usamos "copy to....sdf".

>> Si yo utilizo el "delimited blank" no me quedan esos espacios,[---------] pero me incluye un espacio entre registro y registro.

La primera parte de esta frase.... o no la entiendo o no la creo.


Ratifico: En el archivo que nos muestras sí hay fin de línea entre
registro y registro. No entiendo sinceramente por qué dices que hay
espacio.




On 4 ago, 12:44, Roberto Matarrita <rmatar...@gmail.com> wrote:
> Gracias Hernan por tu ayuda. El problema es que si te vas al final del
> registro y pulsas la flecha hacia la izquierda, te das cuenta de que hay
> espacios en blanco, esos son los que deseo quitar. Si yo utilizo el
> delimited blank no me quedan esos espacios, pero me incluye un espacio entre
> registro y registro. En todo caso voy a darle otra revisada y cualquier cosa
> te solicito ayuda.
>
> Gracias por tu amabilidad.
>
> Roberto
>

Roberto Matarrita

unread,
Aug 5, 2011, 12:54:19 PM8/5/11
to publice...@googlegroups.com
Gracias Hernan ya lo pude seleccionar con todos los onsejos que me dieron , utilicé el fputs.
 
Roberto

Reply all
Reply to author
Forward
0 new messages