Página 1 de 1

Arquivo txt

Enviado: 21 Nov 2004 15:56
por Sergio Cabral
Estou gerando arquivo txt com o comando copy to...type sdf, mas no final do arquivo aberto com o Windows Pad, aparece um caracter quadrado preenchido, que está atrapalhando o meu trabalho.
Alguém sabe como faço para que este caracter não apareça?

Muito obrigado

Enviado: 21 Nov 2004 19:30
por Hasse
Também não sei donde vem este caracter, mas resolvi o assunto finalizando o arquivo com uma série de caracteres, tipo:
99999 ou
#$$# ou outra seqüência qualquer,
que indicariam o fim lógico do arquivo texto, e tudo que estiver após
este finalizador será ignorado.
Hasse

Enviado: 21 Nov 2004 22:19
por Clipper
Prezados Colegas

Esse caractere é uma marca de fim de arquivo - CHR(26) conforme descrito no NG do comando, existem 2 opções :

1 - Gerar o arquivo TXT de outra forma.

2 - Fazer uma função para retirar este caractere, usando as funções de baixo nível (FOPEN,FSEEK,FREADSRT), é simples de fazer e na minha opnião é melhor.

Até logo.

Marcelo

Enviado: 22 Nov 2004 09:47
por Dudu_XBase
Eu resolvi meu problema o ano passado o Junior Prado me deu uma dica que até hj eu utiilizo.....eu crio o arquivo txt ....mando um eject ....depois crio ele novamente ...

set (_SET_DEVICE, "PRINTER")
set (_SET_PRINTFILE, "REMESSA\ENVIO\BB"+alltrim(dtos(date()))+".REM")
nlin := prow()
eject
lin := prow()
set (_SET_DEVICE, "PRINTER")
set (_SET_PRINTFILE, "REMESSA\ENVIO\BB"+alltrim(dtos(date()))+".REM")

/* HEADER DO ARQUIVO CNAB */
devpos (lin,00); devout ("01REMESSA01COBRANCA ")

while !(eof())
devpos (prow()+01,00); devout("dudu_xbase")
dbskip()
enddo

set (_SET_PRINTFILE, "")
set (_SET_DEVICE, "SCREEN")

Enviado: 22 Nov 2004 14:02
por Clipper
Eu não tenho jeito...

Lá vai uma solução que acabei de criar...

Código: Selecionar todos

#include "Directry.ch"
*------------------------------*
 FUNCTION RETIRACARAC(PARQUIVO)
*------------------------------*
// Como parametro deverá ser passado o nome do arquivo do qual
// se deseja excluir o caractere, se não for passado assume que é 
// TEXTO.TXT

ARQUIVO=IF(PARQUIVO=NIL,"TEXTO.TXT",PARQUIVO)
// Pega os dados do arquivo
ADIREC:=DIRECTORY(ARQUIVO)
TAM=ADIREC[1,2]
HAND=FOPEN(ARQUIVO,2)
FSEEK(HAND,0)
MTEXTO=FREADSTR(HAND,TAM-1)

// Cria o novo arquivo sem o caractere de fim de arquivo
HAND2=FCREATE("ARQTEMP.TXT",0)
FWRITE(HAND2,MTEXTO)
FCLOSE(HAND)
FCLOSE(HAND2)

// Exclui o arquivo problemático
FERASE(ARQUIVO)
// Renomeia o arquivo corrigido para o nome correto
FRENAME("ARQTEMP.TXT",ARQUIVO)
RETURN
Até logo.

Marcelo