Página 1 de 1
Arquivo TXT para DIRF
Enviado: 09 Jan 2008 17:30
por locio
Obrigado a todos. Consegui. Apenas a titulo de esclarecimento informo que a unica forma que funcionou foi com a utilização do fwrite()
SELE ARQDBF
GO TOP
FHANDLE = FCREATE(ARQTXT,2)
WHILE !EOF()
FWRITE (FHANDLE, CAMPO + CHR(13) + CHR(10) )
SELE ARQDBF
SKIP
ENDDO
FCLOSE(FHANDLE)
Ai está o algoritmo completo. Simples.
Obrigado a todos,
José Malta Lócio
Enviado: 09 Jan 2008 18:13
por gvc
SELE ARQDBF
GO TOP
FHANDLE = FCREATE(ARQTXT,2)
WHILE !EOF()
FWRITE (FHANDLE, CAMPO + CHR(13) + CHR(10) )
SELE ARQDBF <<== Pode apagar esta linha!!!
SKIP
ENDDO
FCLOSE(FHANDLE)
Enviado: 09 Jan 2008 18:14
por Pablo César
O arquivo do DIRF teria que ser gerado com atributo "H" ? Por quê está FCREATE(ARQTXT,2) e não FCREATE(ARQTXT,0) ?
Enviado: 10 Jan 2008 11:27
por janio
Pessoal,
Aproveitando o tópico...
Qual a diferença de se criar TXTs usando
FCREATE/FWRITE ou utilizar
SET PRINTER TO arquivo/@ PROW() 
? Há algum ganho de velocidade nisso
Jânio
PS: Uso
SET PRINTER TO arquivo/@ PROW() principalmente na criação de relatórios para serem visualizados na tela.
Enviado: 10 Jan 2008 11:39
por Maligno
Acredito que não haja nenhuma diferença tão grande de velocidade. No final dá elas por elas.

Enviado: 10 Jan 2008 12:22
por gvc
Com o set printer vc manda criar um arquivo no formato texto.
Se vc usa @ say quando vc muda a coordenada de linha, no arquivo texto, a linha anterior recebe o CR+LF.
Se vc usa ?, no arquivo texto é mandado um CR+LF e depois estra o texto que vc mandou gravar.
Para não pular a linha antes de gravar os dados, use ??.
No final do arquivo texto vai um caracter de final de arquivo. CHR(26).
O FWrite faz gravação em baixo nivel. É uma sequência de bytes, não importando o que seja.
Tanto que para montar um arquivo texto, ao final de cada linha, vc tem que mandar obrigatoriamente o CR+LF.
Com as funções de baixo nível, vc abre quaisquer tipo de arquivo.
Ah! CR+LF é para formato DOS. Se for no formato UNIX é só o LF.
Enviado: 10 Jan 2008 12:35
por janio
Ok.
Pensei que fosse mais rápido usando FCREATE/FWRITE.
Jânio
Enviado: 10 Jan 2008 12:41
por Maligno
Pode até ser mais rápido. Depende da implementação. Mas sem dúvida, as funções de baixo nível são bem mais flexíveis, apesar de, normalmente, darem mais trabalho. Mas isso é relativo também. Fazendo algumas funções de abstração pode ficar até bem mais fácil.
Enviado: 10 Jan 2008 14:15
por Eolo
Info:
a) FCREATE(ARQTXT,0) // abre somente leitura
b) FCREATE(ARQTXT,2) // abre leitura/gravação
Enviado: 10 Jan 2008 14:38
por Pablo César
Pois é... Eolo eu perguntei mas o Locio ainda não respondeu. Também não sei dizer se a normativa da Receita é para criar o arquivo em modo oculto... (acho que foi erro, mesmo)
Obs.: Alias Eolo, o 2 do FCREATE é HIDEN not READONLY...
Enviado: 10 Jan 2008 14:54
por Eolo
Ops, falha minha. Confundi com o FOPEN():
fopen(arqtxt,2) // abre em modo leitura e gravação
Aliás, tem mesmo algo de errado no FCREATE com 2! Pra que CRIAR um arquivo HIDDEN? O assunto é tão confidencial que nem o próprio criador pode ver? (não resisti à brincadeira...)
Agora, sério: eu acho que muita gente COPIA e COLA coisas, compila e manda rodar. Sem perguntar o porque delas, sem entender o que está acontecendo. Aquilo de ganhar um peixe ao invés de aprender a pescar...
Enviado: 10 Jan 2008 14:58
por Pablo César
hihihi, acho que sim... essa foi boa ! Mas quem sabe ? Esse pessoal do órgão público... vou te dizer... querem tudo TOP-SECRET... hihihi
Enviado: 10 Jan 2008 18:10
por Maligno
Às vezes o cidadão quer criar um arquivo oculto para esconder algum dado sigiloso. Agora, não é porque fica oculto que não pode ser acessado.