Clipper On Line • Ver Tópico - Conversao de Programas 5.2 pra HMG

Conversao de Programas 5.2 pra HMG

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

 

Conversao de Programas 5.2 pra HMG

Mensagempor ssflavio » 25 Mai 2012 16:19

Boa Tarde a todos!
Gostaria de iniciar este tópico de ajuda, agradecendo a todos os integrantes deste forum, em especial ao Pablo e ao Maligno, diga-se de passagem esses 2 ja tem o seu lugar reservado lá no céu.
Chega de firulas e vamos ao que interessa.
Depois de ler muito material sobre as conversões de programas e de ter apanhado muito com alguns erros, estou em um momento critico.
Utilizo algumas funções para manusear arquivos binários (texto) da biblioteca Funcky, os dois principais são:
1) feof() - verifica o final do arquivo
2) freadline() - le uma linha completa

Minha duvida é: como devo proceder para escrever o seguinte trecho de código que copia linhas de um arquivo para outro:
handle1 := fopen("origem.txt")
handle2 := fopen("destino.txt")
do while !feof(handle1)
   LINHA1 := freadline(handle1)
   fwriteline(handle2,LINHA1)
enddo


abraços a todos
Nota de Moderação:
Pablo César: Mensagem editada para colocar a tag [ code ]
Veja como utilizar esta tag: Clique aqui
Flávio dos Santos Szelbracikowski
ssflavio@osite.com.br
ssflavio
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 86
Data de registro: 10 Jul 2008 09:57
Cidade/Estado: São Paulo / SP
Curtiu: 3 vezes
Mens.Curtidas: 3 vezes

Conversao de Programas 5.2 pra HMG

Mensagempor Pablo César » 25 Mai 2012 20:14

Obrigado amigo pelos seus elogios, por falar do Maligno, ele está em falta. Saudades do colega. Mas saiba aqui tem muitos outros colegas com maior know-how e muita predisposição também que sempre irão ajudar sem medir esforços.

Utilizo algumas funções para manusear arquivos binários (texto) da biblioteca Funcky, os dois principais são:
1) feof() - verifica o final do arquivo
2) freadline() - le uma linha completa
Gostei da sua colocação dos dados, bem objetivo e completo. Bom o ideal seria conseguir tais funções equivalentes e daí não terias que mudar quase nada.

Eis o código que irá funcionar:
#include <hmg.ch>
#include "fileio.ch"
#xcommand DEFAULT <v1> TO <x1> [, <vn> TO <xn> ] => ;
                IF <v1> == NIL ; <v1> := <x1> ; END ;
                [; IF <vn> == NIL ; <vn> := <xn> ; END ]

REQUEST HB_GT_WIN_DEFAULT

Function Main
If File("origem.txt")
   handle1 := fopen("origem.txt",FO_READ)
Else
   Alert("Arquivo origem.txt, nao existe !")   
Endif
If File("destino.txt")
   handle2 := fopen("destino.txt",FO_READWRITE)
   
   Fseek( handle2, 0, FS_END ) /* Posiciona até o final do arquivo para adicionar caso que queira que sobre-escreva: anular a linha */
Else
   handle2 := fcreate("destino.txt",FC_NORMAL)
Endif   
do while !feof(handle1)
   LINHA1 := freadline(handle1)
   altd()
   fwriteline(handle2,LINHA1)
enddo
fclose(handle1)
fclose(handle2)
Return

Function feof( nHandle )
Local BLOCK_SIZE := 1
Local cBuffer    := Space( BLOCK_SIZE )
Local nRead      := 0
Local lEof       := .T.

nRead := FRead( nHandle, @cBuffer, BLOCK_SIZE )
IF nRead == BLOCK_SIZE
   fseek( nHandle, -BLOCK_SIZE, FS_RELATIVE )
   lEof:= .F.
ELSE
   lEof:= .T.
ENDIF
Return lEof

Function FReadLine(pFileHandle,nMaxLen)
Local cBuffer:=""

DEFAULT nMaxLen := 512

HB_FReadLine( pFileHandle , @cBuffer , Nil , nMaxLen )
Return cBuffer

Function FWriteLine( nHandle, cString )
Fwrite( nHandle, cString )
Fwrite( nHandle, chr(13) )
Fwrite( nHandle, chr(10) )
Return Nil
Fiz alguma melhoras espero que goste !
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 de usuário

Pablo César
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 5312
Data de registro: 31 Mai 2006 10:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 152 vezes

Conversao de Programas 5.2 pra HMG

Mensagempor ssflavio » 29 Mai 2012 16:14

Gostaria de agradecer o apoio recebido do Pablo e pedir desculpas pela demora do post, mas a semana começou daquele jeito!!!

Considero solucionado o problema!

Se o bicho pegar novamente, vou ter que apelar para o conhecimento de vocês!

Abraço a todos e boa programação!
Flávio dos Santos Szelbracikowski
ssflavio@osite.com.br
ssflavio
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 86
Data de registro: 10 Jul 2008 09:57
Cidade/Estado: São Paulo / SP
Curtiu: 3 vezes
Mens.Curtidas: 3 vezes




Retornar para MiniGui

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 7 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro