sujeira ao criar arquivo texto, ajuda??

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

pena
Usuário Nível 3
Usuário Nível 3
Mensagens: 331
Registrado em: 06 Jul 2004 18:08
Localização: CACHOEIRA DO SUL-RS

sujeira ao criar arquivo texto, ajuda??

Mensagem por pena »

Pessoal, estou criando um exportador em txt
estou fazendo da seguinte maneira
ex:

Código: Selecionar todos

LINHA:=0
SET PRINTER TO TEXTO.TXT
SET DEVICE TO PRINT
DO WHILE ! EOF()
   @LINHA,00 SAY "BLA BLA BLA"
   LINHA++
  SKIP
ENDDO
SET PRINTER TO
SET DEVICE TO SCREEN
o problema que sempre na primeira linha, vem sujeira, low-values, como eliminar isso?
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á

sujeira ao criar arquivo texto, ajuda??

Mensagem por Pablo César »

Por quê não usas as funções de baixo nível para criar arquivos ?

Veja um exemplo como faço:

Código: Selecionar todos

nFhandle:= Fcreate( 'teste.txt', 0 )
If nFhandle < 4
   Alert("Nao foi possivel gerar arquivo !")
   Return
Endif
FWriteLine( nFhandle,"Primeira linha" )
FWriteLine( nFhandle,"Segunda linha" )
FWriteLine( nFhandle,"E assim por diante..." )
Fclose( nFhandle )

Static Function FWriteLine( nHandle, cString )
Fwrite( nHandle, cString )
Fwrite( nHandle, Chr(13) )
Fwrite( nHandle, Chr(10) )
Return Nil
Muito melhor de trabalhar assim...
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.
pena
Usuário Nível 3
Usuário Nível 3
Mensagens: 331
Registrado em: 06 Jul 2004 18:08
Localização: CACHOEIRA DO SUL-RS

sujeira ao criar arquivo texto, ajuda??

Mensagem por pena »

BLZ Pablo, vou dar uma testada nisso, obrigado :xau
DLZ
Usuário Nível 3
Usuário Nível 3
Mensagens: 184
Registrado em: 09 Jun 2008 10:09
Localização: Ibirubá - RS - Brasil

sujeira ao criar arquivo texto, ajuda??

Mensagem por DLZ »

Cara...

coloque um SEPRC(0,0) depois do SET DEVICE TO PRINT que vai resolver o problema...

Um abraço !!
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á

sujeira ao criar arquivo texto, ajuda??

Mensagem por Pablo César »

coloque um SEPRC(0,0)
Bem lembrado ! Essa é uma solução para o atual problema, com certeza ! Mas mesmo assim fica muito mais certo fazer com funções de baixo nível.
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.
pena
Usuário Nível 3
Usuário Nível 3
Mensagens: 331
Registrado em: 06 Jul 2004 18:08
Localização: CACHOEIRA DO SUL-RS

sujeira ao criar arquivo texto, ajuda??

Mensagem por pena »

nao consegui fazer funcionar, criei uma string chamada
linha:=space(1500)

porem quando vou passar a mesma
ela so coube 437

vou voltar como era antes, vlw
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á

sujeira ao criar arquivo texto, ajuda??

Mensagem por Pablo César »

criei uma string chamada
linha:=space(1500)

porem quando vou passar a mesma
ela so coube 437
Não sabia que precisaria tanto. Mas se você ainda quiser testar com a função. Veja que existe o terceiro parâmetro que pode ser definido na função FWRITE. Veja o que diz o manual:
FWRITE( <nHandle>, <cBuffer>, [<nBytes>] ) --> nBytesWritten
Arguments
<nHandle> DOS file handle number.

<cBuffer> Character expression to be written.

<nBytes> The number of bytes to write.
Returns
<nBytesWritten> the number of bytes successfully written.

Description
This function writes the contents of <cBuffer> to the file designated by its file handle <nHandle>. If used, <nBytes> is the number of bytes in <cBuffer> to write.

The returned value is the number of bytes successfully written to the DOS file. If the returned value is 0, an error has occurred (unless this is intended). A successful write occurs when the number returned by FWRITE() is equal to either LEN( <cBuffer>) or <nBytes>.

The value of <cBuffer> is the string or variable to be written to the open DOS file <nHandle>.

The value of <nBytes> is the number of bytes to write out to the file. The disk write begins with the current file position in <nHandle>. If this variable is not used, the entire contents of <cBuffer> is written to the file. To truncate a file. a call of FWRITE( nHandle, "", 0 ) is needed.
Examples
nHandle:=FCREATE('x.txt')

FOR X:=1 to 10
FWRITE(nHandle,STR(x))
NEXT
FCLOSE(nHandle)
Status
Ready
Compliance
This function is not CA-Clipper compatile since it can writes strings greather the 64K
Files
Library is rtl
Colocando o terceiro parâmetro na hora de gravar, deve resolver: Fwrite( nHandle, cString,1500)
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.
Avatar do usuário
Netavin
Usuário Nível 3
Usuário Nível 3
Mensagens: 306
Registrado em: 28 Fev 2007 08:37
Localização: Cacoal-RO

sujeira ao criar arquivo texto, ajuda??

Mensagem por Netavin »

Boa tarde amigos!

Permitam-me: não seria SETPRC(0,0)? ; pelo menos em xHarbour o é.

Netavin
TK90 / TK95 / APPLE IIe / 286 / 386 / 486 / 586 / AMD Atlhon
" Sem saber que era impossível, foi lá e fez !! "
DLZ
Usuário Nível 3
Usuário Nível 3
Mensagens: 184
Registrado em: 09 Jun 2008 10:09
Localização: Ibirubá - RS - Brasil

sujeira ao criar arquivo texto, ajuda??

Mensagem por DLZ »

Desculpem minha falha...
é SETPRC(0,0)..
na pressa esqueci de uma letra ehehehe
Responder