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

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
juniorcamilo
Usuário Nível 3
Usuário Nível 3
Mensagens: 343
Registrado em: 10 Nov 2006 09:12
Localização: Pará

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

Mensagem 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!!
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

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

Mensagem 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().
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
juniorcamilo
Usuário Nível 3
Usuário Nível 3
Mensagens: 343
Registrado em: 10 Nov 2006 09:12
Localização: Pará

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

Mensagem 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?
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

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

Mensagem 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!
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
juniorcamilo
Usuário Nível 3
Usuário Nível 3
Mensagens: 343
Registrado em: 10 Nov 2006 09:12
Localização: Pará

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

Mensagem 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
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

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

Mensagem 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
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"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 do usuário
juniorcamilo
Usuário Nível 3
Usuário Nível 3
Mensagens: 343
Registrado em: 10 Nov 2006 09:12
Localização: Pará

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

Mensagem 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?
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

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

Mensagem 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().
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
juniorcamilo
Usuário Nível 3
Usuário Nível 3
Mensagens: 343
Registrado em: 10 Nov 2006 09:12
Localização: Pará

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

Mensagem 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?
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

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

Mensagem 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)
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

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

Mensagem por rochinha »

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 [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Responder