Arquivo .TXT com linha em branco no final

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

rbonotto
Usuário Nível 3
Usuário Nível 3
Mensagens: 253
Registrado em: 06 Mai 2005 18:52

Arquivo .TXT com linha em branco no final

Mensagem por rbonotto »

Ola, estou com um problema meio...estranho...

Tenho que gerar um arquivo .TXT com a 1º linha sendo header, o numero de registros depois como registros de clientes e a ultima com trailler.

Este arquivo sera enviado e lido por um mainframe, fiz da seguinte forma:

Código: Selecionar todos

aRqName := 'C:\MIX\TXT\' + aRqName + '.TXT'
SET PRINTER TO &aRqName.
SET DEVICE TO PRINT


**** INICIO HEADER registro A
@ PROW()  , 00 SAY 'A'
@ PROW()  , 01 SAY '1'
@ PROW()  , 02 SAY '007615'
@ PROW()  , 22 SAY 'XXXXXXX'
@ PROW()  , 42 SAY '037'
@ PROW()  , 45 SAY 'XXXXXXXXX'
@ PROW()  , 65 SAY cDta
@ PROW()  , 73 SAY nSa
@ PROW()  ,149 SAY '.'
**** FIM HEADER registro A


**** INICIO registro E - clientes
DBGOTOP()
WHILE !EOF()

   @ PROW()+1 , 00 SAY 'E'
   @ PROW()   , 01 SAY cedente
   @ PROW()   , 26 SAY '7E5'
   @ PROW()   , 30 SAY mYidt
   @ PROW()   , 47 SAY vLr
   @ PROW()   , 64 SAY '03'
   IF nparcelas > 0
      @ PROW()   , 66 SAY '01'
      @ PROW()   , 68 SAY STRZERO(nparcelas,2)
   END
   @ PROW()   ,149 SAY 'I'
   SKIP
END
DBGOTOP()
**** FIM registro E - clientes

**** INICIO registro Z - trailler
@ PROW()+1  , 00 SAY 'Z'
@ PROW()    , 01 SAY tOtCli
@ PROW()    , 07 SAY xVlr
@ PROW()    , 149 SAY '.'

**** FIM registro Z - trailler
SET PRINTER OFF
SET PRINTER TO
SET DEVICE TO SCREEN
Funciona ok, mas ele adiciona uma linha em branco apos o trailler e com isto da pau na transmição. Se entrar no edit/notepad e
retirar esta linha o arquivo vai belezinha.

Alguem saberia como faço para que esta linha não seja adicionada no fim ? o cliente esta meio p*to de ter que entrar no arquivo
toda vez, e com razão né :-o

Abs
Editado pela última vez por Toledo em 04 Jun 2010 19:10, em um total de 1 vez.
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
mixsistemas@gmail.com
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Arquivo .TXT com linha em branco no final

Mensagem por sygecom »

Para evitar essa linha em branco você pode usar funções de baixo nivel:
FOPEN(), FWRITE(), FSEEK() E FCLOSE().
O @PROW() adiciona automaticamente ao final da linha a quebra da linha.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
rbonotto
Usuário Nível 3
Usuário Nível 3
Mensagens: 253
Registrado em: 06 Mai 2005 18:52

Re: Arquivo .TXT com linha em branco no final

Mensagem por rbonotto »

Opa ! Obrigado por responder sygecom !

O problema é que as colunas e linhas tem que ser colocadas exatamente em suas posições, se sair uma do lugar o arquivo é rejeitado.
Não tenho pratica com os comandos citados, poderia dar um pequeno exemplo ?

Abraços,
mixsistemas@gmail.com
SandroBelarmino
Usuário Nível 3
Usuário Nível 3
Mensagens: 464
Registrado em: 04 Set 2007 16:11
Localização: Pedreira-SP

Re: Arquivo .TXT com linha em branco no final

Mensagem por SandroBelarmino »

rbonotto escreveu:O problema é que as colunas e linhas tem que ser colocadas exatamente em suas posições, se sair uma do lugar o arquivo é rejeitado.
Para cada linha que voce vai incluir no arquivo com fwrite(), voce a coloca em uma string, com os campos formatados de acordo com o layout que voce precisa seguir, incluindo espaços em branco se necessário.
Não esqueca de incluis no final da string os comandos: chr(13)+chr(10) para ir pra próxima linha.
Ex.

Código: Selecionar todos

nhandle:=fcreate("REPRES.TXT",0)
fclose(nhandle)
nhandle:=fopen("REPRES.TXT",2)
wlinha:=vencod+left(vennome,20)+chr(13)+chr(10)
fwrite(nhandle,wlinha)
fclose(nhandle)
Sandro.
Alessandro R Belarmino
Clipper 5.2e - Blinker 7 - DBFNTX / DBFCDX
"Quem trabalha muito erra muito, quem trabalha pouco erra pouco, quem não trabalha não erra e quem não erra é promovido !!!!"
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Re: Arquivo .TXT com linha em branco no final

Mensagem por Toledo »

Amigo, eu não testei, mas acho que isto vai resolver:

Código: Selecionar todos

aRqName := 'C:\MIX\TXT\' + aRqName + '.TXT'
Set print on
set console off
set print to (aRqName)

**** CRIANDO VARIAVEL cLinha
cLinha:=SPAC(150)

**** INICIO HEADER registro A
Monta('A',1)
Monta('1',2)
Monta('007615',3)
Monta('XXXXXXX',23)
Monta('037',43)
Monta('XXXXXXXXX',46)
Monta(cDta,66)
Monta(nSa,74)
Monta('.',150)
**** FIM HEADER registro A

?? cLinha
?

**** INICIO registro E - clientes
DBGOTOP()
WHILE !EOF()
  cLinha:=SPAC(150)

  Monta('E',1)
  Monta(cedente,2)
  Monta('7E5',27)
  Monta(mYidt,31)
  Monta(vLr,48)
  Monta('03',65)

  IF nparcelas > 0
    Monta('01',67)
    Monta(STRZERO(nparcelas,2),69)
  END
  Monta('I',150) 
  ?? cLinha
  ?
  SKIP
END
DBGOTOP()
**** FIM registro E - clientes

cLinha:=SPAC(150)

**** INICIO registro Z - trailler
Monta('Z',1)
Monta(tOtCli,2)
Monta(xVlr,8)
Monta('.',150)
**** FIM registro Z - trailler

?? cLinha
?

set console on
Set print off
set print to 

Código: Selecionar todos

Proc Monta(cExpr,nCol)
Local nLen:=LEN(cExpr)
cLinha:=STUFF(cLinha,nCol,nLen,cExpr)
Retu
Na função acima o primeiro parâmetro tem que ser do tipo caractere e o segundo é a coluna onde cExpr vai entrar.

Faz um teste ai e se der algum erro, me envie o DBF e o conteúdo das variáveis cDta, nSa, mYidt, vLr, tOtCli e xVlr, para que eu possa fazer alguns testes aqui.

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
rbonotto
Usuário Nível 3
Usuário Nível 3
Mensagens: 253
Registrado em: 06 Mai 2005 18:52

Re: Arquivo .TXT com linha em branco no final

Mensagem por rbonotto »

Obrigado pela atenção dos colegas.

Testei todos os exemplos dados pelos colegas e a dita cuja da linha em branco continua aparecendo :-o

Probleminha danado !!!
mixsistemas@gmail.com
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Re: Arquivo .TXT com linha em branco no final

Mensagem por Toledo »

Amigo, tente tirar o último "?" do exemplo que lhe passei.

Ficando assim:

Código: Selecionar todos

**** INICIO registro Z - trailler
Monta('Z',1)
Monta(tOtCli,2)
Monta(xVlr,8)
Monta('.',150)
**** FIM registro Z - trailler

?? cLinha
****?  //tira esta linha.

set console on
Set print off
set print to 
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
rbonotto
Usuário Nível 3
Usuário Nível 3
Mensagens: 253
Registrado em: 06 Mai 2005 18:52

Re: Arquivo .TXT com linha em branco no final

Mensagem por rbonotto »

Retirei o ultimo "?" e a linha continua aparecendo ! esta pior que encosto ! hehehehe
mixsistemas@gmail.com
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Re: Arquivo .TXT com linha em branco no final

Mensagem por Toledo »

Amigo, fiz um teste aqui usando o exemplo que lhe passei, e não aparece a linha em branco no final. Segue em anexo o PRG que eu testei.

Para compilar usei o Clipper 5.2e e o RTLink, coisa bem simples:

CLIPPER bonotto
RTLINK FI bonotto

Obs.: como não sei qual é a estrutura do arquivo, acabei inventando alguns campos, mas o que importa é o final do arquivo. Faça um teste ai!

Abraços,
Anexos
bonotto.prg
(960 Bytes) Baixado 334 vezes
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Arquivo .TXT com linha em branco no final

Mensagem por sygecom »

Se você fez o teste com FOPEN() a ultima linha do FWRITE() do seu arquivo não pode ter o chr(13)+chr(10).
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
rbonotto
Usuário Nível 3
Usuário Nível 3
Mensagens: 253
Registrado em: 06 Mai 2005 18:52

Re: Arquivo .TXT com linha em branco no final

Mensagem por rbonotto »

Resolvido !!!!! o arquivo anexado bonotto.prg funcionou perfeitamente, troquei pelos dados do DBF e
entrou belezinha.

Este forum arrebenta ! Muito obrigado pessoal :-Y :{ :{ :{
mixsistemas@gmail.com
Responder