Página 1 de 1

Conteúdo: 

Enviado: 27 Mai 2014 16:00
por Alexandre Silva
Ola..
uso o harbour 3.2 e tem um rotina que faço 2 txt para contabilidade..
uso o comando FWRITE() .. agora depois de anos.. um dos 2 arquivos está sendo recusado pelo sistema importador do contador... devido a esse caracter..que aparece no começo do arquivo...


Pelo que vi, está relacionado com o PHP. Nao consigo ver esse caracter com o notepad plus...
O arquivo tem 660K o outro de 91k nao dá problema
Alguma sugestao.. ?? qual comando do Harbour para gravar txt

Conteúdo: 

Enviado: 27 Mai 2014 16:52
por bencz
Tentou com o memowrit ?

MemoWrit()
Writes a character string or a memo field to a file.
Syntax

Código: Selecionar todos

MemoWrit( <cFileName>, <cString> ) --> lSuccess

Conteúdo: 

Enviado: 27 Mai 2014 16:56
por bencz

Conteúdo: 

Enviado: 27 Mai 2014 19:30
por Alexandre Silva
Oi
Memowrit até retorna .t. , mas nao gera arquivo nenhum....

e sobre o link, é para php.. queria uma solucao para o Harbour..

Nunca tive problemas em gerar TXT...

Conteúdo: 

Enviado: 27 Mai 2014 20:00
por alxsts
Olá!

Talvez as configurações de linguagem estejam interferindo. Como estão configuradas? Tente colocar:

Código: Selecionar todos

   REQUEST HB_CODEPAGE_PTISO
   HB_CDPSELECT("PTISO")

Conteúdo: 

Enviado: 27 Mai 2014 20:07
por fladimir
No Harbour tem tb o HB_MEMOWRIT(), teste com ele, se não der se tiver como mandar o arquivo para ser melhor avaliado ou o código de como vc esta fazendo.

[]´s

Conteúdo: 

Enviado: 27 Mai 2014 20:36
por Alexandre Silva
Eu estou usando

Código: Selecionar todos

REQUEST HB_LANG_PT
REQUEST HB_CODEPAGE_ES850C
HB_SETCODEPAGE('ES850C')
HB_LANGSELECT('PT')


varq:=fcreate('nomearq.txt')
fopen(varq, 2) // para leitura e escrita

// vou montando linha a linha e gravando.. 
vtxt:='10111111111111111111112'+space(219)+chr(13)+chr(10)
fwrite(varq,vtxt)
vtxt:='20144444444444411111112'+space(219)+chr(13)+chr(10)
fwrite(varq,vtxt)
fclose(varq)

Como ficaria no hb_memowit() ??

PS: Nos meus editores (Notepad++ e o Edit do Windows) nao aparece o caracter, só na importacao no contador

Vcs podem me indicar um editor para ver o txt ??

Conteúdo: 

Enviado: 27 Mai 2014 21:30
por alxsts
Olá!

Estranho suas code pages estarem configuradas para espanhol (ES)...

O MED - Programmers' Text Editor exibe o código ASCII do carácter anterior à posição do cursor no texto. O download é pequeno e a instalação rápida.
Capturar.PNG
Capturar.PNG (7.2 KiB) Exibido 1469 vezes

Conteúdo: 

Enviado: 27 Mai 2014 22:12
por Alexandre Silva
Obrigado....
Com o editor nao consegui ver o caracter que o software do contador alega...
A menos que tenha alguma config especifica..

Entao vou aguardar..para ver com ele...

Conteúdo: 

Enviado: 27 Mai 2014 22:17
por bencz
O que quis dizer mandando o link do stack-over-flow, não é p/ se ver sobre o PHP, e sim sobre o conteudo da resposta e no que isso influencia na sua pergunta, bastava ler (:

http://en.wikipedia.org/wiki/Byte_order_mark

A resposta escolida no site diz o seguinte:
That's the representation for the UTF-8 BOM in ISO-8859-1. You have to tell your editor to not use BOMs or use a different editor to strip them out.
Essa é a representação para o UTF-8 BOM em ISO-8859-1. Você tem que dizer a seu editor para não usar BOMs ou usar um editor diferente para tira-los.

Conteúdo: 

Enviado: 27 Mai 2014 22:28
por Alexandre Silva
Ok
vi isso
e sabia, pq o Resposavel pelo software do contador, editou o arquivo...para importar
Eu é que nao consigo ver aqui.. vou ver com ele qual editor usou ..

Conteúdo: 

Enviado: 27 Mai 2014 23:04
por Toledo
Alexandre Silva escreveu:varq:=fcreate('nomearq.txt')
fopen(varq, 2) // para leitura e escrita
No seu código, esta segunda linha fopen(varq,2) não é necessário, pois o arquivo já foi aberto na linha anterior com o fcreate(). Pode ser que seja este o problema.

Abraços,

Conteúdo: 

Enviado: 27 Mai 2014 23:36
por Alexandre Silva
A funcao que abre/cria é essa ...

Código: Selecionar todos


function DFILEOPEN(varq)
local ret
ret:= fopen(varq, 2)
if (ret = -1) // se nao existe
   ret:= fcreate(varq)
endif
fclose(ret)
ret:= fopen(varq, 2)
return ret


Conteúdo: 

Enviado: 28 Mai 2014 07:38
por Toledo
Alexandre Silva escreveu:Eu estou usando
Alexandre Silva escreveu:A funcao que abre/cria é essa ...
Deu a entender que você estava usando a da sua mensagem anterior.
Alexandre Silva escreveu:fclose(ret)
ret:= fopen(varq, 2)
Estes comandos também estão a mais, não precisa, pois nas linhas anteriores ou o arquivo será aberto no FOPEN() ou no FCREATE().

Abraços,

Conteúdo: 

Enviado: 09 Jul 2014 21:16
por Alexandre Silva
Oi
Só para fechar.
o que estava havendo é que no cadastro de um produto. passou um caracter especial..
entao na geracao do arquivo txt o harbour, grava (escondido ) esse caracter ,
para indicar que é um arquivo OEM...

Bem ao salvar o arquivo pelo bloco de notas em formato ANSI, consegui ver qual era o problema...
entao é isso..nao tem haver com abertura de arquivo..consegui resolver..