Página 1 de 1

Salvar arquivo em ANSI

Enviado: 10 Dez 2014 15:41
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

Salvar arquivo em ANSI

Enviado: 10 Dez 2014 15:50
por Pablo César
EU acho que você tem que ler linha a linha convertendo de OEM para ANSI

Salvar arquivo em ANSI

Enviado: 10 Dez 2014 16:09
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 )

Salvar arquivo em ANSI

Enviado: 10 Dez 2014 16:38
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)

Salvar arquivo em ANSI

Enviado: 10 Dez 2014 18:06
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