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
Arquivo txt
Moderador: Moderadores
-
Sergio Cabral
- Usuário Nível 2

- Mensagens: 52
- Registrado em: 18 Set 2004 18:51
- Localização: São José dos Campos
Arquivo txt
Sou programador em Clipper 5.01 a 15 anos e procuro melhorar meus conhecimentos. Este site me parece muito bom e poderemos nos ajudar.
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
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

- Mensagens: 1071
- Registrado em: 25 Ago 2003 16:55
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")
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
Eu não tenho jeito...
Lá vai uma solução que acabei de criar...
Até logo.
Marcelo
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
Marcelo

