tirar o chr(10) e chr(13) do arquivo TXT
Moderador: Moderadores
- juniorcamilo
- 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
bom dia..
estou precisando de um função de tirar o chr(10) e chr (13) de um determinado arquivo TXT?
Obrigado desde ja!!
estou precisando de um função de tirar o chr(10) e chr (13) de um determinado arquivo TXT?
Obrigado desde ja!!
-
alxsts
- 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
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().
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)
Alexandre Santos (AlxSts)
- juniorcamilo
- 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
sim a minha ideia foi sempre usar o FOpen(), mas pense num menino que é ruim de FOpen, Fread e Fwrite, kkk eu sou!!!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().
será que os amigos aqui não tem uma já pronta?
-
alxsts
- 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
Olá!
As oportunidades para estudar e aprender sempre aparecem. Não deixe escapar esta. Aproveite!juniorcamilo escreveu:pense num menino que é ruim de FOpen, Fread e Fwrite, kkk eu sou!!!
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
- juniorcamilo
- 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
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
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
- JoséQuintas
- 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
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).
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/
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/
- juniorcamilo
- 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
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)
onde eu estou errando?
-
alxsts
- 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
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().
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)
Alexandre Santos (AlxSts)
- juniorcamilo
- 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
tu é foda!! kkkkalxsts escreveu: Olá!
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
-
alxsts
- 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
Olá!
Sim.
Sim.
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.alxsts escreveu:Como você ainda usa Clipper, verifique o tamanho de seus arquivos .TXT. ...
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)
Alexandre Santos (AlxSts)
- rochinha
- 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
Amiguinhos,
Pesquisem sobre a função HardCR() creio que ela pode ajudar.
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.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.