Arquivo txt

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Sergio Cabral
Usuário Nível 2
Usuário Nível 2
Mensagens: 52
Registrado em: 18 Set 2004 18:51
Localização: São José dos Campos

Arquivo txt

Mensagem 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
Sou programador em Clipper 5.01 a 15 anos e procuro melhorar meus conhecimentos. Este site me parece muito bom e poderemos nos ajudar.
Hasse
Usuário Nível 4
Usuário Nível 4
Mensagens: 820
Registrado em: 19 Out 2004 10:30
Localização: Jaraguá do Sul - SC

Mensagem 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
Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Mensagem 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
Dudu_XBase
Membro Master
Membro Master
Mensagens: 1071
Registrado em: 25 Ago 2003 16:55

Mensagem 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")


________________________________________________________________________________________________________
(Aow Saudade) Clipper 5.2e, Blinker 7, RDD SIXNSX, DBFCDX /Xharbour 1.0, Rdd Mediator (Mysql) Free , RDD Sqlrdd (Sql Server) Comercial
(Hoje) C# Python Sql Server e Oracle




Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Mensagem 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
Responder