Como criar, abrir, escrever e fechar txt em baixo nível?

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

labaroazul
Usuário Nível 2
Usuário Nível 2
Mensagens: 83
Registrado em: 26 Fev 2008 14:52
Localização: São Paulo - SP
Contato:

Como criar, abrir, escrever e fechar txt em baixo nível?

Mensagem por labaroazul »

Bom dia, amigos! :xau

Preciso exportar para arquivo texto dados como os abaixo:

PEDIDO CLIENTE VALOR FATURAS
33 010 1333,31 30/45/60
45 577 5743,20 30/45/60/75
(...)

Só que são muitos registros. Ouvi dizer que se eu criar o arquivo, abrir, escrever e fechar em baixo nível essa operação é bastante rápida. Como faço isso? (#-)
Windows XP Professional + Clipper 5.2e + Exospace + Dbase III Plus + SIX3 + NoDosImp + LXPic
"O trabalho afasta três males: o vício, a pobreza e o tédio." (Voltaire)
Site: http://www.labaroazul.xpg.com.br
Repositório: http://www.4shared.com/dir/31334106/e79 ... aring.html
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1298
Registrado em: 06 Jul 2004 00:44
Contato:

Re: Como criar, abrir, escrever e fechar txt em baixo nível?

Mensagem por ANDRIL »

Ola, veja se te ajuda.

Código: Selecionar todos

 *-cria e abre o arq vazio
 tnovo="NOVOARQ.TXT"
 hand2=fcreate("&tnovo",0)

 *- aqui grava o cabecalho
 fwrite(hand2,"PEDIDO CLIENTE VALOR FATURAS"+chr(13)+chr(10))

 n=1
 *- aqui coloquei ate 10, se for registros use !eof()
 do while n<=10

        *--aqui vc coloca os dados dos registros
        fwrite(hand2," ped"+padl(n,2,"0")+"  cli"+padl(n,2,"0")+;
        "  val"+padl(n,2,"0")+" Fat"+padl(n,2,"0")+chr(13)+chr(10))
        n++
 enddo

 *- aqui fecha o arquivo criado, nao se esqueca desta linha
 fclose(hand2)
Ate+,
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
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á

Re: Como criar, abrir, escrever e fechar txt em baixo nível?

Mensagem por Pablo César »

1. Esse arquivo texto tem que ter esse padrão com espaços entre os campos. Você poderia nos dizer o por quê ?
2. Você menciona que são muitos os registros para fazer de forma convencional. Pergunto: quantos registros são aos que você se refere.
3. Fazer do modo convencional, é a forma mais rápida que existe, mas claro os dados não são separados por espaços. Daí então é questão de usar o COPY TO .... SDF
4. Na verdade você quer aprender a usar as funções de baixo nível. Sugiro você obter algum livro sobre tais funções, pesquisar na internet (aqui no fórum tem vários exemplos), tentar fazer um programinha simples utilizando-se do NG (Norton Guide) para ver a sintase de cada função. Comece com FOPEN, FCLOSE, FCREATE, FERROR, FREAD, FWRITE.
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.
labaroazul
Usuário Nível 2
Usuário Nível 2
Mensagens: 83
Registrado em: 26 Fev 2008 14:52
Localização: São Paulo - SP
Contato:

Re: Como criar, abrir, escrever e fechar txt em baixo nível?

Mensagem por labaroazul »

1 - Este arquivo tem de ter espaços entre os valores porque, assim, os campos ficam "no jeito" para serem importados por outro computador onde já tem um programa para importação seguindo esse layout, Pablo César. Mas não se preocupe: ao passar cada registro, completarei os campos com espaços em branco no esquema REPLICATE(" ",<NUMERO>). Creio que vai dar certo.

2 - Atualmente são 51.280 registros e isso pode aumentar consideravelmente no mês que vem, pois é prudente passar todos os registros já existentes mais os novos.

3 - O programa de importação já usa um comando parecido. Se não me engano é o Copy from ... SDF. Acho que sei mais ou menos como funciona.

4 - Com mais calma, depois, vou "escarafunchar" o NG.

Valeu, gente! :{

Ah! Gostei dessa figurinha cabeluda! (#-) :-Y
Windows XP Professional + Clipper 5.2e + Exospace + Dbase III Plus + SIX3 + NoDosImp + LXPic
"O trabalho afasta três males: o vício, a pobreza e o tédio." (Voltaire)
Site: http://www.labaroazul.xpg.com.br
Repositório: http://www.4shared.com/dir/31334106/e79 ... aring.html
Responder