Gravar Arquivo TXT

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
Singulani
Usuário Nível 1
Usuário Nível 1
Mensagens: 13
Registrado em: 13 Ago 2004 12:59

Gravar Arquivo TXT

Mensagem por Singulani »

Alo galera,

Preciso saber porque não estou conseguindo gravar fisicamente meu arquivo TXT após executar uma rotina de filtro como mostro abaixo.
O problema é que tudo funciona noemalmente mas o arquivo não é gravado no HD. Será que vc pode me dar uma ajuda? Veja minha rotina.

Grato
Singulani...

se possível responda para o meu e-mail:

sing@click21.com.br

-----------------------------------------------

/* gerando o nome do arquivo */
cArquivo := "DUDU_XBASE".TXT"


/* criando o arquivo */
nHandle := fcreate ("cArquivo, FC_NORMAL)

dbselectarea ("arq_fun")

? "Aguarde Exportando Cadastro de Funcionários"

while ( CODCLI >= cCliente .and. CODCLI <= cCliente .and. !eof () )

/* montagem do registro */

cLinha := ""
cLinha += arq_fun->CODFUN
cLinha += arq_fun->CODEMP
cLinha += arq_fun->NOMFUN
cLinha += transform(arq_fun->QTDCES, "999999")
cLinha += arq_fun->STAFUN
cLinha += arq_fun->CODMOT
cLinha += arq_fun->NOMMOT
cLinha += chr(13)+chr(10) // para saltar a Linha

// para gravar no arquivo txt
fwrite (nHandle, cLinha, len (cLinha))

dbskip ()

enddo

fclose (nHandle)

? "Exportação Efetuada com Sucesso"
tone (3000,2)
tone (3000,3)
Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Mensagem por Clipper »

Prezado Colega

A primeira vista encontrei 2 problemas.

1 - cArquivo := "DUDU_XBASE".TXT"
2 - nHandle := fcreate ("cArquivo, FC_NORMAL)

1 - O nome do arquivo tem mais de 8 caracteres no sufixo "DUDU_XBASE"
não sei se você pegou e colou mas tb tem aspas sobrando

2 - Tem aspas onde não é necessário e está faltando a que fecha

Até logo.

Marcelo
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Avatar do usuário
Singulani
Usuário Nível 1
Usuário Nível 1
Mensagens: 13
Registrado em: 13 Ago 2004 12:59

Mensagem por Singulani »

Oi Marcela,

Me desculpae mas esses erros eu já havia corrigido.

/* gerando o nome do arquivo */
cArquivo := "ARQ_01.TXT"


/* criando o arquivo */
nHandle := fcreate ("cArquivo", FC_NORMAL)

dbselectarea ("arq_fun")

? "Aguarde Exportando Cadastro de Funcionários"

while ( CODCLI >= cCliente .and. CODCLI <= cCliente .and. !eof () )

/* montagem do registro */

cLinha := ""
cLinha += arq_fun->CODFUN
cLinha += arq_fun->CODEMP
cLinha += arq_fun->NOMFUN
cLinha += transform(arq_fun->QTDCES, "999999")
cLinha += arq_fun->STAFUN
cLinha += arq_fun->CODMOT
cLinha += arq_fun->NOMMOT
cLinha += chr(13)+chr(10) // para saltar a Linha

// para gravar no arquivo txt
fwrite (nHandle, cLinha, len (cLinha))

dbskip ()

enddo

fclose (nHandle)
Alessandro
Usuário Nível 3
Usuário Nível 3
Mensagens: 141
Registrado em: 07 Jul 2004 09:39
Localização: Santo Antonio da Platina-PR

Mensagem por Alessandro »

Olá,

Experimente assim:

fwrite(nHandle, @cLinha, len (cLinha))
Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Mensagem por Clipper »

Pô !!!

Marcela é sacanagem... :( :oops: :cry:

Fui...

Marcelo
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

/* criando o arquivo */
nHandle := fcreate ("cArquivo", FC_NORMAL)
NOTA 1: Provavelmente deu tudo certo, mas o arquivo criado passou a se chamar "cArquivo". Você não usou o conteúdo da variável para indicar o nome do arquivo, mas criou um arquivo com o nome da variável. Teste: procure por um arquivo chamado "cArquivo". Certamente você o encontrará.
É só distração. Não se preocupe. Acontece com todo mundo.

NOTA 2: Economize um pouco de código com construções do tipo
cLinha := ""
cLinha += arq_fun->CODFUN
Use diretamente cLinha := arq_fun->CODFUN. Como se trata da primeira linha do loop, o efeito será o mesmo. Não faz muita diferença no presente momento, mas se você se prender a esse tipo de construção nada econômica, um dia, num loop mais "pesado", você poderá comprometer a performance do seu programa. É sempre melhor cultivar o hábito da economia de código.

[]'s
Maligno
http://www.buzinello.com/prg
Responder