por JoséQuintas » 21 Jun 2010 14:47
Mudaria o seu tutorial, pra facilitar.
Num primeiro momento, tudo que o xHarbour aceita, o Clipper também.
Isso significa que durante os testes pode usar os mesmos fontes nos dois.
Vai poder alterar seu fonte normal, rodar no clipper, e testar no xHarbour.
Nada melhor pra teste do que ter os mesmos fontes, tendo certeza de que estão corretos.
No Clipper o default é que o nome do programa é o mesmo nome que está no fonte (nome.prg).
Ao compilar com /N, o nome do fonte é desprezado, e vale o que estiver dentro do fonte.
Este é o default do xHarbour.
Então... iniciando...
1. Primeiro verifique o que está usando além do Clipper, pra ver se vai ter tudo na mão.
Pode estar usando LIBs no Clipper sem equivalente em xHarbour, então este vai ser o primeiro ponto a verificar.
2. Pode converter xharbour sem sair do clipper
Basta alterar sua linha de compilação do clipper, acrescentando o /n
E a partir daÃ, iniciar as modificações.
3. Cada módulo tem que ter seu nome dentro do fonte.
DIGITA.PRG
@ 1, 1 get texto
Isso vai ser alterado para
DIGITA.PRG
Procedure Digita // ou Function Digita()
@ 1, 1 get texto
A única exceção é o programa principal.
Obrigatoriamente, o nome tem que ser MAIN.
PRINCIPAL.PRG
Function Main()
Nessa primeira alteração, se tomar cuidado, pode usar o próprio xharbour pra ajudar, ou se seus fontes tiverem menos de 64kb, o próprio clipper. Assim só precisa mexer a mão o fonte principal. É apenas um esboço, confirme antes de colocar em prática sobrescrevendo os fontes originais.
mDirFiles := Directory("*.prg")
For nCont = 1 To Len(mDirFiles)
mNomePrg := mDirFiles[nCont,1]
mNomeInterno := Substr(mNomePrg,1,At(".",mNomePrg)-1) // primeira parte é o nome
mFontePrg = memoread(mNomePrg)
MemoWrit(mNomePrg,"procedure " + mNomeInterno + Chr(13) + Chr(10) + mFontePrg)
Next
Pronto.
Se usa só clipper padrão, o programa já deverá ser compilado tanto no Clipper quanto no xHarbour.
A partir daqui começarão algumas diferenças, mas mesmo assim ainda será possÃvel usar nos dois.
Uma delas é quanto a nomes abreviados: comece a eliminar as abreviações
Tem também maiúsculas/minúsculas, ou detalhes simples, que algumas linhas no programa principal resolvem.
Nesta parte, acrescente
#ifdef __HARBOUR__
comandos diferentes
#endif
Pronto. Seu fonte continuará sendo o mesmo em Clipper e xharbour, e no programa principal, só essas linhas acima.
Pode escolher pra compilar com Clipper ou xHarbour a qualquer momento, sem mexer em nada.
De um modo geral, isso será suficiente pra ver o funcionamento lado a lado da versão Clipper e xHarbour.
Mas tudo depende do que usa a mais além do Clipper, e também do estilo do seu fonte.
Ainda vai encontrar algumas pequenas diferenças entre Clipper e xHarbour nesta fase.
Como estará usando o mesmo fonte, verá o mesmo resultado.
E vai estar ajustando tudo no ambiente clipper, o que vai tirar dúvidas sobre estar fazendo certo, e até evitar ter duas versões de fonte pra mexer.
Aqui nem uso xHarbour, mas o fonte continua podendo ser compilado nos dois, mesmo após anos de modificações.
É só fazer essas mudanças básicas, e manter o padrão.
Lógico... isso é só pra testar, ou pra uma mudança rápida a qualquer momento, mantendo os fontes sempre atualizados para Clipper/xHarbour.
Se decidir por xHarbour seria só usar, se decidir por não xHarbour, pelo menos organizou seus fontes Clipper e deixou prontos para uma decisão futura.
Sim.. ia esquecendo...
Do mesmo modo que no Clipper configura PATH para EXE, Includes e LIBs, também precisa configurar para o xHarbour e para o compilador C. De um modo geral, o hbmake atende a compilação, desde que estejam configurados esses PATHs.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"https://github.com/JoseQuintas/