Página 1 de 1
tirar o chr(10) e chr(13) do arquivo TXT
Enviado: 24 Jan 2017 09:23
por juniorcamilo
bom dia..
estou precisando de um função de tirar o chr(10) e chr (13) de um determinado arquivo TXT?
Obrigado desde ja!!
tirar o chr(10) e chr(13) do arquivo TXT
Enviado: 24 Jan 2017 09:54
por alxsts
Olá!
Use a função
StrTran() que pertence ao próprio Clipper.
Como você ainda usa Clipper, verifique o tamanho de seus arquivos .TXT. Se o tamanho for menor ou igual a 64 KB, poderá fazer um MemoRead() do arquivo e trocar, de uma só vez, todos os Chr(13) + Chr(10) pelo carácter desejado. Se o tamanho for maior que 64Kb, terá que abrir o arquivo com FOpen(), fazer um loop lendo em blocos com FRead(),trocar os caracteres e gravar um arquivo de saída com FWrite().
tirar o chr(10) e chr(13) do arquivo TXT
Enviado: 24 Jan 2017 10:04
por juniorcamilo
alxsts escreveu: abrir o arquivo com FOpen(), fazer um loop lendo em blocos com FRead(),trocar os caracteres e gravar um arquivo de saída com FWrite().
sim a minha ideia foi sempre usar o FOpen(), mas pense num menino que é ruim de FOpen, Fread e Fwrite, kkk eu sou!!!
será que os amigos aqui não tem uma já pronta?
tirar o chr(10) e chr(13) do arquivo TXT
Enviado: 24 Jan 2017 10:27
por alxsts
Olá!
juniorcamilo escreveu:pense num menino que é ruim de FOpen, Fread e Fwrite, kkk eu sou!!!
As oportunidades para estudar e aprender sempre aparecem. Não deixe escapar esta. Aproveite!
tirar o chr(10) e chr(13) do arquivo TXT
Enviado: 24 Jan 2017 10:29
por juniorcamilo
vou mudar a pergunta!!!
estou gerando um arquivo txt de um arquivo DBF com o comando:
ARQUIVO := "TESTE.TXT"
Sele ALIAS
COPY TO ARQUIVO DELIMITED WITH BLANK SDF
tem como gerar sem o CHR(13)+CHR(10)
motivo gerar XML para o SAT!!
obrigado desde ja
tirar o chr(10) e chr(13) do arquivo TXT
Enviado: 24 Jan 2017 13:02
por JoséQuintas
Por padrão não dá.
Mas não sei no que vai ajudar retirar o Chr(13) e Chr(10)
Porque não gera logo o XML ?
(ou aproveite a rotina pra gerar do jeito que quiser).
Código: Selecionar todos
SET ALTERNATE TO ( "arquivo.xml" )
SET ALTERNATE ON
SET CONSOLE OFF
DO WHILE ! Eof()
?? [<registro>]
FOR nCont = 1 TO FCount()
?? [<] + FieldName( nCont ) + [>]
?? Transform( FieldGet( nCont ), "" )
?? [</] + FieldName( nCont ) + [>]
NEXT
?? [</registro>]
SKIP
ENDDO
SET CONSOLE ON
SET ALTERNATE OFF
SET ALTERNATE TO
tirar o chr(10) e chr(13) do arquivo TXT
Enviado: 24 Jan 2017 15:18
por juniorcamilo
Código: Selecionar todos
nHandle := Fopen(vArq,2)
If nHandle # -1
nTam := FSEEK(nHandle,0, FS_END)
cBuff := SPACE(nTam)
nPos := FSEEK(nHandle,0)
IF ( nRead := FREAD(nHandle,@cBuff,nTam) ) > 0
IF ( nEol:=AT(CRLF,SUBSTR(cBuff,1,nRead)) ) == 0
exit
ELSE
nPos2 := fSeek(nHandle,nEol+1,0)
nTam := ((nTam-2)-nEol)
cBuff2 := space(nTam)
nRead2 := FREAD(nHandle,@cBuff2,nTam)
nEscrito:= FWRITE(nHandle, cBuff2, nRead2)
ENDIF
ENDIF
Endif
FClose(nHandle)
como disse nao sou expert em fopen, fwrite e etc..
onde eu estou errando?
tirar o chr(10) e chr(13) do arquivo TXT
Enviado: 24 Jan 2017 16:27
por alxsts
Olá!
Já está no caminho certo!
Não dá para gravar as alterações no mesmo arquivo que está lendo. Siga a sequência que indiquei acima. Antes de começar gravar, crie um arquivo de saída com a função FCreate(). A leitura (FRead()) deverá estar dentro de um loop (Do While ... Enddo). Não precisa deste bloco If...Endif. Após a leitura de cada bloco para a variável, aplique a StrTran( variavel, Chr(13) + Chr(10), " " ) e grave a variável no arquivo de saída com FWrite().
tirar o chr(10) e chr(13) do arquivo TXT
Enviado: 24 Jan 2017 17:42
por juniorcamilo
alxsts escreveu: Olá!
tu é foda!! kkkk
Código: Selecionar todos
nHandle := LF_Fopen(vArq,2)
If FERROR() == 0
nTam := FSEEK(nHandle,0, FS_END)
cBuff := SPACE(nTam)
nResp := FSEEK(nHandle,0, FS_SET)
nResp := FREAD(nHandle,@cBuff,nTam)
FClose(nHandle)
IF nResp > 0
mensagem("Convertendo Arquivo "+vArq)
cBuff := StrTran( cBuff, CRLF, "" )
nHandle := LF_FCREATE(vArq,0)
If FERROR() == 0
nEscrito:= FWRITE(nHandle, cBuff,len(cBuff))
FClose(nHandle)
Else
Confirma2("Nao Conseguiu Criar/Gravar o Arquivo("+vArq)
ENDIF
ENDIF
Else
Confirma2("Nao Conseguiu Abrir o Arquivo("+vArq)
Endif
pergunta: pode dar erro c o arquivo TXT for muito grande?
tirar o chr(10) e chr(13) do arquivo TXT
Enviado: 25 Jan 2017 12:02
por alxsts
Olá!
Sim.
alxsts escreveu:Como você ainda usa Clipper, verifique o tamanho de seus arquivos .TXT. ...
Se for maior que 65535 bytes vai dar erro pois não vai conseguir carregar o arquivo todo em uma variável de memória (trecho de código abaixo). Por isso sugeri fazer em partes, dentro de um loop.
Código: Selecionar todos
02 If FERROR() == 0
03 nTam := FSEEK(nHandle,0, FS_END)
04 cBuff := SPACE(nTam)
05 nResp := FSEEK(nHandle,0, FS_SET)
06 nResp := FREAD(nHandle,@cBuff,nTam)
07 FClose(nHandle)
tirar o chr(10) e chr(13) do arquivo TXT
Enviado: 05 Fev 2017 00:51
por rochinha
Amiguinhos,
Pesquisem sobre a função HardCR() creio que ela pode ajudar.