Clipper On Line • Ver Tópico - tirar o chr(10) e chr(13) do arquivo TXT

tirar o chr(10) e chr(13) do arquivo TXT

Discussão sobre a linguagem CA-Clipper.

Moderador: Moderadores

 

tirar o chr(10) e chr(13) do arquivo TXT

Mensagempor juniorcamilo » 24 Jan 2017 08:23

bom dia..

estou precisando de um função de tirar o chr(10) e chr (13) de um determinado arquivo TXT?

Obrigado desde ja!!
Avatar de usuário

juniorcamilo
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 343
Data de registro: 10 Nov 2006 08:12
Cidade/Estado: Pará
Curtiu: 29 vezes
Mens.Curtidas: 2 vezes

tirar o chr(10) e chr(13) do arquivo TXT

Mensagempor alxsts » 24 Jan 2017 08:54

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().
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2945
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

tirar o chr(10) e chr(13) do arquivo TXT

Mensagempor juniorcamilo » 24 Jan 2017 09:04

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?
Avatar de usuário

juniorcamilo
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 343
Data de registro: 10 Nov 2006 08:12
Cidade/Estado: Pará
Curtiu: 29 vezes
Mens.Curtidas: 2 vezes

tirar o chr(10) e chr(13) do arquivo TXT

Mensagempor alxsts » 24 Jan 2017 09:27

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!
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2945
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

tirar o chr(10) e chr(13) do arquivo TXT

Mensagempor juniorcamilo » 24 Jan 2017 09:29

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
Avatar de usuário

juniorcamilo
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 343
Data de registro: 10 Nov 2006 08:12
Cidade/Estado: Pará
Curtiu: 29 vezes
Mens.Curtidas: 2 vezes

tirar o chr(10) e chr(13) do arquivo TXT

Mensagempor JoséQuintas » 24 Jan 2017 12:02

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).

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
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18160
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

tirar o chr(10) e chr(13) do arquivo TXT

Mensagempor juniorcamilo » 24 Jan 2017 14:18

 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?
Avatar de usuário

juniorcamilo
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 343
Data de registro: 10 Nov 2006 08:12
Cidade/Estado: Pará
Curtiu: 29 vezes
Mens.Curtidas: 2 vezes

tirar o chr(10) e chr(13) do arquivo TXT

Mensagempor alxsts » 24 Jan 2017 15:27

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().
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2945
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

tirar o chr(10) e chr(13) do arquivo TXT

Mensagempor juniorcamilo » 24 Jan 2017 16:42

alxsts escreveu: Olá!


tu é foda!! kkkk

       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?
Avatar de usuário

juniorcamilo
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 343
Data de registro: 10 Nov 2006 08:12
Cidade/Estado: Pará
Curtiu: 29 vezes
Mens.Curtidas: 2 vezes

tirar o chr(10) e chr(13) do arquivo TXT

Mensagempor alxsts » 25 Jan 2017 11:02

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.
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)
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2945
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

tirar o chr(10) e chr(13) do arquivo TXT

Mensagempor rochinha » 04 Fev 2017 23:51

Amiguinhos,

Pesquisem sobre a função HardCR() creio que ela pode ajudar.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4548
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 808 vezes
Mens.Curtidas: 246 vezes




Retornar para CA-Clipper

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 6 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro