impressão para arquivo

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

Moderador: Moderadores

clebervn
Usuário Nível 3
Usuário Nível 3
Mensagens: 286
Registrado em: 12 Jun 2007 10:49
Localização: Florianópolis/SC

impressão para arquivo

Mensagem por clebervn »

Por exemplo, se tenho a seguinte sequencia de comandos :

SET PRINT TO "TESTE.TXT"
SET DEVICE TO PRINT
@ 0,0 SAY "teste"
SET DEVICE TO SCREEN
SET PRINT TO

não deveria criar o arquivo TESTE.TXT e por como conteudo essa linha "teste" ???

pq até cria mas não grava nada dentro....
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Re: impressão para arquivo

Mensagem por asimoes »

Olá Cleber

Testei o seu exemplo e desta forma funciona:

Código: Selecionar todos

FUNCTION MAIN
SET PRINT TO "TESTE.TXT"
SET DEVICE TO PRINT
@ 0,0 SAY "teste"
SET DEVICE TO SCREEN
SET PRINT TO
RETURN 
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
clebervn
Usuário Nível 3
Usuário Nível 3
Mensagens: 286
Registrado em: 12 Jun 2007 10:49
Localização: Florianópolis/SC

Re: impressão para arquivo

Mensagem por clebervn »

certo, isso é apenas um trecho de um programa

mesmo assim continua não gravando nada dentro do arquivo
Avatar do usuário
Vander
Usuário Nível 3
Usuário Nível 3
Mensagens: 214
Registrado em: 23 Jul 2004 01:43
Localização: João Monlevade - MG

Re: impressão para arquivo

Mensagem por Vander »

Só consegui gerar arquivo texto desta forma :


LOCAL cTexto:="", ILF:=CHR(13) + CHR(10), nroarq:="", cFile:=""
..
..
cTexto +="seu texto" + ILF
cTexto +="seu texto" + ILF
..
..
cFile = "pasta\arquivo.txt"
nroarq = fcreate(cFile,0)
if ferror()=0
fwrite(nroarq,cTexto,len(cTexto))
fclose(nroarq)
else
msgstop('Arquivo texto não pode ser gravado !!!')
endif
..
..
Vander
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Re: impressão para arquivo

Mensagem por asimoes »

Olá Vander,
Verifique esta função StrFile()

Código: Selecionar todos


StrFile(): Writes a string to a file starting at a specified position. 

Syntax
StrFile( <cString>      , ;
         <cFileName>    , ;
        [<lUseExisting>], ;
        [<nOffset>]     , ;
        [<lTruncate>]     ) --> nBytesWritten

Arguments
<cString> 
This is a character string to be written to the file <cFileName>. 
<cFileName> 
This is a character string holding the name of the file to write to. It must include path and file extension. If the path is omitted from <cFileName>, the file is searched in the current directory only. 
<lUseExisting> 
This parameter defaults to .F. (false) so that a new file is created. To write <cString> to an existing file, <lUseExisting> must be set to .T. (true). 
<nOffset> 
This optional numeric parameter specifies the starting position for writing. It defaults to the end-of-file. 
<lTruncate> 
This parameter defaults to .F. (false). When set to .T. (true), the file is truncated after <cString> is written, i.e. the file ends with <cString>. Return
The function returns the number of bytes written to the file as a numeric value. 

Example:

 PROCEDURE Main
      LOCAL cFileName := "Prg_files.txt"
      LOCAL aFiles    := Directory( "*.prg" )
      LOCAL aFile

      FOR EACH aFile In aFiles
         StrFile( aFile[1] + HB_OsNewLine(), ;
                  cFileName, .T. )
      NEXT
   RETURN
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: impressão para arquivo

Mensagem por sygecom »

clebervn escreveu:Por exemplo, se tenho a seguinte sequencia de comandos :

SET PRINT TO "TESTE.TXT"
SET DEVICE TO PRINT
@ 0,0 SAY "teste"
SET DEVICE TO SCREEN
SET PRINT TO

não deveria criar o arquivo TESTE.TXT e por como conteudo essa linha "teste" ???

pq até cria mas não grava nada dentro....
Cleber no seu exemplo fiz como esta abaixo e gerou sem problemas:

SET DEVICE TO PRINT
SET PRINT TO "TESTE.TXT"
@ prow()+1,0 SAY "teste"
SET DEVICE TO SCREEN
SET PRINT OFF
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Responder