MENU
Início
Produtos
Loja Virtual
Quem Somos
Contato
Login
 
 
sql lib
Versão Free
Versão Plus!
Perguntas Comuns
Comparar versões
Notas da versão
Manual On-line
 
 
Ferramentas
xDevStudio
MyMake
DBF2SQL
 
 
Downloads
Catálago Geral
Harbour & xHarbour
Borland C++
Apostilas de SQL
 
 
Suporte
Obter Suporte
Fórum SQL LIB
Blog da SQL LIB
Grupo de Discussão
 
 
artigos
Instalando xHB
Instalando BCC
Migrando de Clipper
 
 
VÍdeos
Catálago Geral
MySQL - Baixando
MySQL - Instalando
 
     
 
Artigo - Migrando de Clipper para Harbour/xHarbour
Por Vailton Renato

 
     
 
Objetivo
 
     
 
Dicas para migraÇÃo
Estas dicas foram postadas por várias pessoas em alguns fóruns na internet que comentaram sobre suas experiências e dificuldades encontradas ao migrarem seus aplicativos de Clipper para Harbour ou xHarbour. As principais alterações necessárias em seu código fonte são:
  • FUNCTION MAIN()
    O seu módulo principal deve conter uma função chamada MAIN() e seu projeto deve ser compilado com a opção /N. A função MAIN() é importante porque ela indica ao xHarbour qual PRG é o principal.

         
     
    Exemplo de código em Clipper


    dDay := Date()
    @
    2, 2 SAY "Date:"
    @ 2, 8 GET dDay ;
      VALID !
    Empty( dDay )
    READ

    return
     
         
     
         
     
    Exemplo de código em Harbour/xHarbour


    function
    Main()
    dDay :=
    Date()
    @
    2, 2 SAY "Date:"
    @
    2, 8 GET dDay ;
       VALID !Empty( dDay )
    READ

    return nil
     
         
     
    Além disto todos outros módulos .PRG do seu projeto devem iniciar explicitamente com uma function ou procedure. E para estes casos o nome desta rotina pode ter qualquer nome ou ser igual ao nome do próprio PRG.

    É comum o programador esquecer-se deste detalhe e no momento da compilação, obter uma mensagem de erro "Error E0001 Statement not allowed outside of Procedure or Function".
     
  • DO <idProcedure> [WITH <lista argumentos>] 
    Em todos os lugares no teu código onde você executar um comando DO para chamar um outro arquivo PRG, você deve alterar o código para que fique como no exemplo abaixo:
    DO MEUCADAS WITH Parm1, Parm2
    /* modifique para ficar assim: */
    MEUCADAS( Parm1, Parm2 )
  • FUNCTION / RETURN
    Lembre-se que uma função sempre deve retornar alguma coisa,  tipo RETURN .T. então ao mudar as novas funções, coloque um comando RETURN com algum valor ou NIL se desejar.
     
  • NOMES LONGOS
    Um cuidado muito importante a ser tomado na hora da migração é com os nomes longos de variáveis, functions e procedures que você usa em seu sistema. O Clipper considera apenas os dez primeiros caracteres no nome de uma variável ou função. Veja um exemplo deste problema:
    LOCAL cMinhasVariaveis := "nome no plural"
    /*
     * A Linha abaixo em Clipper irá alterar o valor da
     * variavel declarada como LOCAL logo acima, pois o
     * Clipper considera APENAS os dez primeiros bytes
     * utilizados nos nomes de variáveis e funções.
     */
    cMinhasVariavel := "o clipper só olha" +;
                       "os dez primeiros caracteres."
    /* A linha abaixo gerará um erro em Harbour/xHarbour */
    ALERT(cMinhasVariaveus)
    O Harbour/xHarbour aceita até 63 caracteres no nome de variáveis, function eprocedures. É por isto que o exemplo acima geraria um erro ao ser executado com [x]Harbour - mas não com Clipper! Fique atento à isto, pois isto pode lhe trazer alguns transtornos com comandos tais como SAVE TO e REST FROM.

         
     
    A regra para nomes de campos nos arquivos DBFs continuam as mesmas iguais ao Clipper: limite de 10 caracteres não podendo conter espaços e/ou caracteres acentuados.
     
         
     
  • PADRONIZAR NOMES DE ARQUIVO
    Uma sugestão adicional é que você padronize os nomes de arquivos de sua aplicação e converta-os tudo para letras minúsculas, o que vai lhe ajudar a evitar alguns transtornos com nomes de arquivos. Esta dica é de especial valor se você pretende no futuro migrar seu aplicativo para Linux, que diferencia maiúsculas e minúsculas nos nomes de arquivos.

    Para converter todos os arquivos de um mesmo diretório para letras minúsculas de uma única vez utilize o programa LOWER. Este utilitário foi encontrado na seção de arquivos do falecido grupo HARBOUR-BR e sem dúvida, é muito útil. Para baixar-lo acesse nossa seção de arquivos ou clique aqui.
PRINCIPAIS DÚVIDAS E QUESTÕES LEVANTADAS
As principais dúvidas reportadas pelos programadores Clipper que migraram para Harbour/xHarbour foram:
  • É possível utilizar índices NSX em Harbour/xHarbour normalmente?
    R: Há muitos profissionais utilizando índices NSX em Clipper, porém, este RDD só se encontra disponivel por enquanto, na versão comercial do xHarbour.
     
  • As LIBs que utilizo com o Clipper são compatíveis com Harbour/xHarbour?
    R: Não. Todas as funções e LIBs usadas no Clipper devem ter os fontes recompilados para que possam trabalhar com o Harbour/xHarbour. Rotinas em C ou Assembler usadas com o Clipper não são compatíveis para desenvolvimento em ambiente 32bits.
     
  • Utilizo a famosa Visual Lib para Clipper em meus sistemas - eu consigo migrar?
    R: Sim. Mas note que infelizmente a Visual Lib distribuida com o Clipper não é compatível com o Harbour ou xHarbour. No entato, em nosso site disponibilizamos uma LIB compatível com a Visual Lib original, convertida e melhorada para 32bits. Visite nossa seção de downloads para obter o arquivo.
     
  • Trabalho com uma rotina em Clipper que não tenho os sources e agora?
    Se você utilizar com freqüência uma LIB de terceiros ou um OBJ que contenha uma ou mais rotinas das quais você não tem os fontes para recompilar, você não terá como usar estas rotinas em Harbour/xHarbour. É comum os programadores fazerem uso de um descompilador nestes casos, na tentativa de obter os sources das rotinas utilizadas.
     
  • Cores diferentes com "*" e SetBlink(.F.) funcionam do mesmo modo como no Clipper?
    R:  Não. Devido ao fato de que em Windows, todos os aplicativos em modo console possuem o SETBLINK com valor fixo - isto é imposto pelo sistema operacional - sendo assim você terá que mudar as cores que não forem compativeis.

    Uma outra solução é baixar e analizar a VISUAL LIB em nossa seção de downloads, que demonstra como contornar esta "limitação" do Windows utilizando uma ferramenta externa para corrigir o problema.
     
  • Meus clientes podem utilizar o Windows 98 para rodar meus programas?
    R: Sim. No entanto os aplicativos gerados para serem executados em modo console (somente texto), terão os seus desempenhos prejudicados ao serem executados nesta versão do Windows. Isto se deve infelizmente à uma falha do sistema operacional e não do compilador, tanto que o mesmo aplicativo rodando em Windows 2000, XP ou superior é executado sem problemas.

    Para contornar este problema pode-se usar a bibliotecas GTWVT e GTWVW que são distribuidas juntamente com o compilador xHarbour. Veja a pasta samples para mariores detalhes.
consideraÇÕes finais
Esta página não visa de modo algum conter todos os detalhes e/ou macetes envolvidos no processo de migração de um aplicativo em Clipper para Harbour/xHarbour mas, visa apenas ajudar a todos os interessados, fornecendo algumas sugestões e dicas conforme passadas por vários profissionais que já enfrentaram tal situação.
 
     
 
Sobre o autor:
 
     

Todos os arquivos mencionados neste tutorial estão disponíveis na seção de DOWNLOADS do nosso site. Comentários, dúvidas e sugestões podem ser enviadas ao nosso fórum.
 
     
   
Design desenvolvido por Vailton Renato, Copyright © 2003-2008 WebNet do Brasil Ltda. Todos os direitos são reservados.
Todas as marcas mencionadas neste site são de propriedade de seus respectivos detentores. Saiba mais clicando aqui.