Nova Linha em arquivo texto

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
rosalvo rosa
Usuário Nível 3
Usuário Nível 3
Mensagens: 156
Registrado em: 10 Jan 2006 19:21
Localização: Curitiba - PR

Nova Linha em arquivo texto

Mensagem por rosalvo rosa »

Boa tarde amigos

Estou fazendo uma rotina onde gravo um arquivo TXT que será enviado por e-mail ao cliente.

Quando o cliente abre no seu iphone por ex, o aquivo abre certo.

Porém quando ele abre o arquivo no PC, usando o Bloco de Notas, o arquivo fica juntando a primeira linha com a segunda
a terceira com a quarta e assim por diante.

Eu gravo o arquivo setando PRINTER TO &arquivo.

Existe algum caracter para gravar que, ao abrir com o Bloco de Notas, ele separe as linhas corretamente ?

Desde já agradeço.

Abraço

Rosalvo
wmanesco
Usuário Nível 3
Usuário Nível 3
Mensagens: 116
Registrado em: 09 Set 2016 13:18
Localização: ITAJAI - SC

Nova Linha em arquivo texto

Mensagem por wmanesco »

Pode colocar o trecho de código onde está gravando?
William Manesco
Harbour 3.x | Fivewin | BCC | MySQL (TDolphin) | HBQT | HBIDE | Atom
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Nova Linha em arquivo texto

Mensagem por alxsts »

Olá!

Se seu sistema roda sob Windows, acrescente Chr(13) + Chr(10) ao final de cada linha a ser impressa. Se utiliza Harbour, poderá tornar este processo independente do sistema operacional acrescentando o retorno da função hb_eol() ao final de cada linha a imprimir. Talvez até já esteja fazendo isto e obtendo problemas com o Notepad. Pode acontecer pois este editor é bem simples...
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Nova Linha em arquivo texto

Mensagem por JoséQuintas »

Na prática as informações são insuficientes.
Depois de um SET PRINTER TO arquivo pode existir qualquer coisa, não significa que esteja certo.

Se for considerar somente esse comando, está certo e não tem o que fazer.
Tudo depende do que vém depois.

Poste um exemplo simples, enviando duas linhas pro arquivo, pra ver como está fazendo.
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
rosalvo rosa
Usuário Nível 3
Usuário Nível 3
Mensagens: 156
Registrado em: 10 Jan 2006 19:21
Localização: Curitiba - PR

Nova Linha em arquivo texto

Mensagem por rosalvo rosa »

Olá pessoal.

Mudei a forma de criar o arquivo e deu certo. Agora estou usando o FWRITE
De qualquer maneira, fica o registro e agradecimento. Valeu pessoal.

cRetLine := "chr(13)+chr(10)"
errhandle := FCREATE("TESTEX.TXT")
cLinha:= " EMPRESA "
FWRITE(errhandle,cLinha+&cRetLine.)
For i:=1 To 5
cLinha:= REPLICATE("-",30) + " linha " + Str(i,1)
FWRITE(errhandle,cLinha+&cRetLine.)
Next
FCLOSE(errhandle)
FCLOSE("TESTEX.TXT")
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Nova Linha em arquivo texto

Mensagem por alxsts »

Olá!

Este código pode ser melhorado:

- Ao invés de definir uma string e atribuir "Chr(13) + Chr(10)", atribua os caracteres diretamente:

Código: Selecionar todos

cRetLine := chr(13)+chr(10) 
- Na hora de gravar, não use o operador macro ( & ). Use

Código: Selecionar todos

FWRITE(errhandle,cLinha + cRetLine)
Isto melhora a performance e diminui o tamanho do executável...
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
rosalvo rosa
Usuário Nível 3
Usuário Nível 3
Mensagens: 156
Registrado em: 10 Jan 2006 19:21
Localização: Curitiba - PR

Nova Linha em arquivo texto

Mensagem por rosalvo rosa »

Boa Alex, valeu.

Abraço
Responder