Salvar arquivo em ANSI

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

Moderador: Moderadores

Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Salvar arquivo em ANSI

Mensagem por rubens »

Boa tarde ...

Estou implementando o SPED. Daí o validador só abre o arquivo TXT se estiver no formato ANSI.
O que estou fazendo:

Código: Selecionar todos

cFILE := 'SPED\SPED'+SUBST(DTOC(dDTINI),4,2)+SUBST(DTOC(dDTINI),9,2)+'.TXT'
SET PRINTER TO &cFILE
SET DEVI TO PRINTER
...
relatorio
...
SET PRINTER TO	
SET DEVI TO SCREEN
cSPED := MEMOREAD( cFILE )
cSPED := WIN_OEMTOANSI( cSPED )+CHR(13)+CHR(10)
MEMOWRIT( cFILE, cSPED )  
RUN NOTEPAD &cFILE 
Blz. o PVA leu o arquivo agora... Só que deixou de reconhecer o final de linha (chr13)+chr(10). Ele já é colocado no final do 'relatorio' e eu ainda pra reforçar coloquei de novo depois que converto para ANSI. Mesmo assim o PVA continua reclamando que não encontrou o final de arquivo...

O que mais posso fazer... ????

Obrigado
Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Salvar arquivo em ANSI

Mensagem por Pablo César »

EU acho que você tem que ler linha a linha convertendo de OEM para ANSI
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Salvar arquivo em ANSI

Mensagem por Jairo Maia »

Olá Pessoal,

Rubens, ao invés de usar MemoWrit(), tente assim e veja se funciona:

Código: Selecionar todos

nHandler := FCreate( cFILE )
FWrite( nHandler, cSPED )
FClose( nHandler )
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)
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Salvar arquivo em ANSI

Mensagem por alxsts »

Olá!

Acho que você está confundindo o marcador de final de linha - ou separador de linhas - ( CHR(13)+CHR(10) ) com o marcador de final de arquivo, que é o CHR(26). Altere a linha abaixo para ficar assim:

Código: Selecionar todos

cSPED := WIN_OEMTOANSI( cSPED )+CHR(26)
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Salvar arquivo em ANSI

Mensagem por rubens »

Pessoal na mesma hora eu tinha achado uma solução e editei o post mas não sei porque não atualizou aqui no Fórum

é o seguinte troquei memoread() e memowrit() por hb_memoread() e hb_memowrit(). Tinha lido aqui no Fórum algo a respeito que memoread() e memowrit() usam o padrão OEM e o hb_memoread() e o hb_memowrit() usa o padrão ANSI e funcionou. não precisa nem converter. Basta ler o arquivo e salvar com hb_memowrit()

Código: Selecionar todos

cFILE := 'SPED\SPED'+SUBST(DTOC(dDTINI),4,2)+SUBST(DTOC(dDTINI),9,2)+'.TXT'
SET PRINTER TO &cFILE
SET DEVI TO PRINTER
...
relatorio
...
SET PRINTER TO 
SET DEVI TO SCREEN

cSPED := HB_MEMOREAD( cFILE )
HB_MEMOWRIT( cFILE, cSPED ) 

RUN NOTEPAD &cFILE 
"Eu e minha casa servimos ao Senhor e você ???"
Responder