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.