Página 1 de 1

arquivo texto

Enviado: 30 Ago 2005 18:06
por hauch
Estou gerando um arquivo texto para critica do programa do ipe do Rio Grande do Sul

gero este arquivo e no final do arquivo aparece uma linha em branco que eu não entendo por que esta aparecendo e se não for removida da erro na critica do arquivo

cada linha tem q ter 160 bytes

Código: Selecionar todos

FUNCTION GRAVA
SET PRINT TO &ARQUIVO
SET DEVICE TO PRINT
SET PRINT ON
setprc(0,0)
LIN = 00

*--PARA TODAS AS TRS
@ LIN,00 SAY "SMH"
@ LIN,03 SAY XCGC
@ LIN,17 SAY STRZERO(DENI,4)
@ LIN,21 SAY STRZERO(XREF,5)
@ LIN,26 SAY XCOD
@ LIN,34 SAY XHOSP
@ lin,159 say repl(" ",1)
LIN = LIN +1
*--VERIFICA ARQUIVOS DE PAGINAS
SELE 6
go top
DO WHILE .NOT. EOF() .AND. (NOTA>=XNOTA .AND. NOTA<=XNOTA1) 
   xnotab=nota
   XINICIO=0
   xinic76=0
   xinic77=0
   DO WHILE NOTA=XNOTAB
      ltr=tr
      lfolha=folha
      IF TR=75 .or. tr=85
         IF XINICIO=0
            sele 2
            seek str(xnotab)
            xmatri=matricula
            xcodpre=substr(xcod,3,8)
            ***************************************************
            @ LIN,00 SAY REPL(" ",13)
            @ LIN,13 SAY "00"
            @ LIN,15 SAY STRZERO(GTR,2)
            @ LIN,17 SAY "00"
            @ LIN,19 SAY MATRICULA
            @ LIN,32 SAY CID
            sele 6
            @ LIN,38 SAY STRZERO(ql,2)
            @ LIN,40 SAY SUBSTR(XCOD,3,8)
            @ LIN,46 SAY "03"
            sele 2
            @ LIN,48 SAY MOTIVO
            exemploi = dtoc(data)
            exemploa = dtoc(data1)
            z1 = substr(exemploi,9,2)
            z2 = substr(exemploi,4,2)
            z3 = substr(exemploi,1,2)
            z4 = substr(exemploa,9,2)
            z5 = substr(exemploa,4,2)
            z6 = substr(exemploa,1,2)
            @ LIN,49 SAY Z3+Z2+Z1
            @ LIN,55 SAY Z6+Z5+Z4
            @ LIN,61 SAY strzero(GUIA,6)
            @ LIN,67 SAY STRZERO(NOTA,5)
            SELE 6
            @ LIN,72 SAY STRZERO((totdesp+totghon+totgser)*100,13)
            @ LIN,85 say "01"
            @ LIN,87 SAY strzero(flfim,2)
            @ LIN,89 SAY STRZERO(totdesp*100,13)
            @ LIN,102 SAY STRZERO(FLiniser,2)
            @ LIN,104 SAY STRZERO(FLfimser,2)
            @ LIN,106 SAY STRZERO(totgser*100,13)
            @ LIN,119 SAY STRZERO(totghon*100,13)
            @ LIN,132 SAY REPL(" ",28)
            LIN = LIN +1
            XINICIO=1
         ENDIF
         ******LANCAMENTOS
         SELE 7
         set order to 3
         SEEK STR(xnotab)+str(ltr)+str(lfolha)
         IF FOUND()
            LINHA=01
            DO WHILE .NOT. EOF() .AND. i4numero=xnotab .and. i4tr=ltr .and. i4folha=lfolha
               @ LIN,00 SAY REPL(" ",13)
               @ LIN,13 SAY STRZERO(I4SEQ,2)
               @ LIN,15 SAY I4TR
               @ LIN,17 SAY "00"
               @ LIN,19 SAY STRZERO(i4mesi,2)+STRZERO(i4diai,2)
               @ LIN,23 SAY STRZERO(I4CGC,14)
               @ LIN,37 SAY STRZERO(I4CODATEND,8)
               @ LIN,45 SAY STRZERO(I4NDIA,2)
               @ LIN,47 SAY STRZERO(I4OCCDIA,5)
               @ LIN,52 SAY STRZERO(I4AUX,2)
               @ LIN,54 SAY STRZERO(I4VIAS,2)
               @ LIN,56 SAY STRZERO(I4URG,2)
               @ LIN,58 SAY REPL(" ",102)
               SKIP
               lin = lin+1
            ENDDO
         ENDIF
      ENDIF
      sele 6
      ***TR 76
      **************************************************
      IF TR=76 .or. TR=86
         if xinic76=0
            @ LIN,00 SAY REPL(" ",13)
            @ LIN,13 SAY "00"
            @ LIN,15 SAY ltr
            @ LIN,17 SAY strzero(lfolha,2)
            @ LIN,19 SAY XMATRI
            @ LIN,38 SAY STRZERO(ql,2)
            @ LIN,40 SAY XCODPRE
            @ LIN,46 SAY "03"
            @ LIN,49 SAY Z3+Z2+Z1
            @ LIN,67 SAY STRZERO(xnotab,5)
            @ LIN,119 SAY STRZERO((totgdes+totgmat)*100,13)
            @ LIN,132 SAY STRZERO(totgmat*100,13)
            @ lin,145 say repl(" ",15)
            lin=lin+1
            XINIC76=1
         endif
         SELE 7
         set order to 3
         SEEK STR(xnotab)+str(ltr)+str(lfolha)
         IF FOUND()
            LINHA=01
            DO WHILE .NOT. EOF() .AND. i4numero=xnotab .and. i4tr=ltr .and. i4folha=lfolha
               @ LIN,00 SAY REPL(" ",13)
               @ LIN,13 SAY strzero(i4seq,2)
               @ LIN,15 SAY strzero(i4tr,2)
               @ LIN,17 SAY STRZERO(i4folha,2)
               @ LIN,19 SAY strzero(i4mesi,2)+strzero(i4diai,2)
               @ LIN,37 SAY STRZERO(i4codatend,8)
               @ LIN,45 SAY STRZERO(i4ndia,2)
               @ LIN,47 SAY STRZERO(i4occdia,5)
               @ LIN,56 SAY "00"
               if i4valor>0
                  @ LIN,58 SAY STRZERO(i4valor*100,11)
               ELSE
                   @ LIN,58 SAY STRZERO(i4matmed*100,11)
               ENDIF
               @ LIN,69 SAY alltrim(i4BRASINDI)
               @ LIN,81 SAY REPL(" ",79)
               IF I4SEQ=25
                  XINIC76=0
               ENDIF
               SKIP
               lin=lin+1
            ENDDO
         ENDIF
      ENDIF
      SELE 6
      IF TR=77 .OR. TR=87
         IF XINIC77=0
            @ LIN,00 SAY REPL(" ",13)
            @ LIN,13 SAY "00"
            @ LIN,15 SAY strzero(LTR,2)
            @ LIN,17 SAY strzero(Lfolha,2)
            @ LIN,19 SAY XMATRI
            @ LIN,38 SAY STRZERO(QL,2)
            @ LIN,40 SAY XCODPRE
            @ LIN,46 SAY "03"
            @ LIN,49 SAY Z3+Z2+Z1
            @ LIN,67 SAY STRZERO(xnotab,5)
            @ LIN,119 SAY STRZERO((TOTGSER+totgmat)*100,13)
            @ LIN,132 SAY STRZERO(TOTGMAT*100,13)
            @ lin,145 say repl(" ",15)
            lin=lin+1
            XINIC77=1
         ENDIF
         SELE 7  
         set order to 3
         SEEK STR(xnotab)+str(ltr)+str(lfolha)
         IF FOUND()
            LINHA=01
            DO WHILE .NOT. EOF() .AND. i4numero=xnotab .and. i4tr=ltr .and. i4folha=lfolha
               @ LIN,00 SAY REPL(" ",13)
               @ LIN,13 SAY strzero(I4SEQ,2)
               @ LIN,15 SAY LTR
               @ LIN,17 SAY STRZERO(LFOLHA,2)
               @ LIN,19 SAY STRZERO(I4MESI,2)+STRZERO(I4DIAI,2)
               @ LIN,23 SAY STRZERO(I4CGC,14)
               @ LIN,37 SAY STRZERO(I4CODATEND,8)
               @ LIN,45 SAY STRZERO(I4NDIA,2)
               @ LIN,47 SAY STRZERO(I4OCCDIA,5)
               @ LIN,56 SAY "00"
               @ LIN,58 SAY STRZERO((i4valor+I4MATMED)*100,11)
               @ LIN,69 SAY REPL(" ",91)
               IF I4SEQ=25
                  XINIC77=0
               ENDIF  
               LIN = LIN +1
               SKIP
            ENDDO
         ENDIF
         SELE 6
      ENDIF
      SKIP
   ENDDO
ENDDO
SET DEVICE TO SCREEN
SET PRINT OFF
SET DEVICE TO
return NIL

Enviado: 30 Ago 2005 18:32
por Stanis Luksys
Olá,

Não tive tempo de olhar a sua função, mas você no final de tudo pode abrir com MemoRead() o arquivo texto gerado e eliminar a ultima linha.

Espero ter ajudado.

Enviado: 31 Ago 2005 12:14
por david.miguel
Aproveitando o Topico.

Tem algum comando no qual eu posso esta lendo um arquivo TXT linha-a-linha.

:xau