Quitar la ultima linea sin datos en un TXT

383 views
Skip to first unread message

Esteban Micossi

unread,
Sep 10, 2020, 12:27:43 PM9/10/20
to Comunidad de Visual Foxpro en Español
Hola Grupo

Continuando con este laburo para generar un TXT,  tengo la siguiente rutina.

acumula=''
sele reg4
scan
acumula=acumula+alltrim(reg4.desglo1)+alltrim(reg4.desglo2)+chr(13)+chr(10)
endscan

strtofile(acumula , "registro4.txt")

El problema es que el final del TXT, me larga una linea vacía y en la AFIP me salta con error por esa ultima linea.
Como hago para que el final del TXT marque la ultima linea con datos y el cursor se posicione al final sin dar un <enter> con chr(13)+chr(10).
Sino, debo ingresar al TXT y quitarle esa ultima linea, pero no así el caso.

Bueno grupo, gracias por todo.

Saludos

Esteban Micossi

Arnaldo Toledano

unread,
Sep 10, 2020, 12:37:42 PM9/10/20
to publice...@googlegroups.com

Cuando llegues a la ultima linea, NO LE PONGAS el +chr(13)+chr(10)

Arnaldo Toledano

--
Visita el Blog de la Comunidad Visual FoxPro en Español: http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/publicesvfoxpro/df652279-b9a0-40e3-9446-477bf2cc7091n%40googlegroups.com.

Arnaldo Toledano

unread,
Sep 10, 2020, 12:41:13 PM9/10/20
to publice...@googlegroups.com

No lei todo tu mail.
Para evitar de poner chr(13)+chr(10)
Yo lo aria asi.
Entre otras opcines que hay

Sele Reg4

Nro_Registros = Reccount()
Nro=0
Scan

    Nro = Nro + 1

     If Nro=Nro_Registros acumula=acumula+alltrim(reg4.desglo1)+alltrim(reg4.desglo2)
    Else acumula=acumula+alltrim(reg4.desglo1)+alltrim(reg4.desglo2)+chr(13)+chr(10)
    Endif
Endscan

Arnaldo Toledano

El 10/09/2020 a las 13:27, Esteban Micossi escribió:

Irwin Rodriguez

unread,
Sep 10, 2020, 12:42:18 PM9/10/20
to publice...@googlegroups.com
#Define CRLF Chr(13) + Chr(10)
Local lcContent As Memo, ;
	lnTotalRows As Integer, ;
	lnCurRow 	As Integer
Select reg4
lcContent	= ""
lnTotalRows	= Reccount("reg4")
lnCurRow	= 0
Scan
	lnCurRow  = lnCurRow  + 1
	lcContent = lcContent + Alltrim(reg4.DESGLO1) + Alltrim(reg4.DESGLO2) + Iif(lnCurRow < lnTotalRows, CRLF, '')
Endscan
=Strtofile(lcContent, "registro4.txt")

--

Esteban Micossi

unread,
Sep 10, 2020, 2:15:34 PM9/10/20
to Comunidad de Visual Foxpro en Español
Gracia Irwin y Tesys por responder a mi inquietud
Voy a probar  vtas sugerencias.  
Gracias
atte
E.Micossi

Zarlu

unread,
Sep 10, 2020, 2:58:28 PM9/10/20
to Comunidad de Visual Foxpro en Español
Buenas tardes Estaban Micossi!

Si ya tienes generado el txt quizá te sirva esto:
(o bien limpiar después de generar)

*-elimina renglones vacíos al principio y final de txt
tcMemo=FILETOSTR("c:\prueba.txt")
lcRetVal = ""
FOR lnCounter=1 to ALINES(laLines,tcMemo)
    If !EMPTY(laLines[lnCounter])
        lcRetVal =lcRetVal+ALLTRIM(laLines[lnCounter])+Chr(13)
    EndIf
EndfOR
lcVeces=OCCURS(CHR(13),lcRetVal)
ThisForm.Edit1.Value=STRTRAN(lcRetVal,CHR(13),"",lcVeces)

Suerte
zarlu
Chetumal, Quintana Roo, México

contabil...@gmail.com

unread,
Sep 10, 2020, 11:58:11 PM9/10/20
to Comunidad de Visual Foxpro en Español
endscan
......
acumula=Substr(acumula,1,len(acumula)-1)

Adalberto Perez

unread,
Sep 11, 2020, 9:47:39 AM9/11/20
to publice...@googlegroups.com
Con la siguiente Rutina, una vez creado el txt, puedes recorrerlo y eliminar todas las líneas en blanco. Eleiges el fichero txt destino, tienes el texto en memoria, le llevas a un arreglo y luego lo recorres.

strsave = [txt_destino nombre completo, incluyendo ruta]
    
=ALINES(atxt, [txt_en memoria] ,.F.)
    N = ALEN(atxt)

    */*ELIMINA LAS LINEAS BLANCAS

    FOR i=1 TO N

      IF !EMPTY(ALLTRIM(atxt(i)))
        nby = STRTOFILE(atxt(i)+CHR(13)+CHR(10),strsave,1)
      ENDIF

    ENDFOR



--
Visita el Blog de la Comunidad Visual FoxPro en Español: http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.

Omar Bellio

unread,
Sep 11, 2020, 11:56:08 AM9/11/20
to publice...@googlegroups.com

- 2 en este caso, me parece

--

Reply all
Reply to author
Forward
0 new messages