Olá!
Estou tentando remover um caractere que é interpretado como CHR LF + CR
Usando alltrim(descricao) não adianta.
Tem outro comando para pegar só o que tem escrito e visível ?
Saudações,
Itamar M. Lins Jr.
Remover quebra de linha
Moderador: Moderadores
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 8029
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 2 vezes
- Curtiram: 1 vez
- JoséQuintas
- Administrador

- Mensagens: 20416
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
- Curtiram: 1 vez
Remover quebra de linha
Talvez o Reg_Ex*, ou o StrTran() pra trocar caracteres.
Já vi lugares que trocam o Chr(13) + Chr(10) por Chr(10) + Chr(13), não sei porque.
Já vi lugares que trocam o Chr(13) + Chr(10) por Chr(10) + Chr(13), não sei porque.
José M. C. Quintas
Harbour 3.2, mingw, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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/
- Jairo Maia
- Moderador
- Mensagens: 2820
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
- Curtiu: 2 vezes
Remover quebra de linha
Mas qual caractere é esse LF? Quebra de linha em Windows é composto por 2 caracteres, a saber Chr( 13 ) + Chr( 10 ), onde Chr( 13 ) é nominado CR e Chr( 10 ) nomindado LF.
Textos salvos pelo MemoEdit(), as linhas são terminadas por Soft carriage, qie é composto pelos caracteres Chr( 141 ) + Chr( 10 ). Para transformar Soft Carriage em Hard Carriage ( Chr( 13 ) + Chr( 10 ) ) tem a função HardCR( cString ), não sei se esse é o caso.
Se esse for o caso, basta então fazer:
Textos salvos pelo MemoEdit(), as linhas são terminadas por Soft carriage, qie é composto pelos caracteres Chr( 141 ) + Chr( 10 ). Para transformar Soft Carriage em Hard Carriage ( Chr( 13 ) + Chr( 10 ) ) tem a função HardCR( cString ), não sei se esse é o caso.
Se esse for o caso, basta então fazer:
Código: Selecionar todos
cVar := StrTran( HardCR( AllTrim( descricao ) ), Hb_EOL() ) Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
-
marcosgambeta
- Usuário Nível 3

- Mensagens: 332
- Registrado em: 16 Jun 2005 22:53
Remover quebra de linha
Olá Itamar,
Visto que Windows usa CR + LF e Unix apenas LF, eu costumo resolver assim:
Qualquer quebra de linha é removida, seja CR+LF, LF+CR ou apenas LF.
Visto que Windows usa CR + LF e Unix apenas LF, eu costumo resolver assim:
Código: Selecionar todos
cTexto := StrTran( cTexto, chr( 13 ) , "" ) // elimina CR (carriage return)
cTexto := StrTran( cTexto, chr( 10 ) , "" ) // elimina LF (line feed)Atenciosamente,
Marcos Antonio Gambeta
Marcos Antonio Gambeta
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 8029
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 2 vezes
- Curtiram: 1 vez
Remover quebra de linha
Olá!
Acredito que vem da internet. Copiar e colar nome, etc do sintegra ou de alguma página em HTML.
Saudações,
Itamar M. Lins Jr.
Acredito que vem da internet. Copiar e colar nome, etc do sintegra ou de alguma página em HTML.
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
-
marcosgambeta
- Usuário Nível 3

- Mensagens: 332
- Registrado em: 16 Jun 2005 22:53
Remover quebra de linha
Itamar,
Outra opção seria limpar da string tudo que for < 32. Veja o exemplo abaixo:
Neste caso, você tem a opção de decidir o que fazer com cada código de controle (faixa 00-31).
Outra opção seria limpar da string tudo que for < 32. Veja o exemplo abaixo:
Código: Selecionar todos
PROCEDURE Main()
LOCAL cText
cText := "teste1 " + chr( 10 ) + " teste2" + chr( 9 ) + "teste3 " + chr( 25 ) + chr( 13 ) + chr( 10 )
? len( cText )
? cText
cText := ClearString( cText )
? len( cText )
? cText
RETURN
FUNCTION ClearString( cString )
LOCAL cNewString
LOCAL n
cNewString := ""
FOR n := 1 TO len( cString )
IF asc( substr( cString, n, 1 ) ) == 9 // TAB
cNewString += chr( 32 )
ELSEIF asc( substr( cString, n, 1 ) ) >= 32
cNewString += substr( cString, n, 1 )
ENDIF
NEXT n
RETURN cNewStringAtenciosamente,
Marcos Antonio Gambeta
Marcos Antonio Gambeta