Página 1 de 1

De xHarbour 1.2.3 para Harbour 3.2

Enviado: 17 Jun 2024 09:01
por clodoaldomonteiro
Bom, mais um que está convertendo do xHarbour 1.2.3 para o Harbour 3.2 MinGW, pois acho que o Harbour tem mais recursos e mais atualizações que o seu irmão XH. E vamos lá.

Acho importante ter as versão atualizadas e oficiais, pois garante que você fique no mesmo barco da maioria e que tenha ajuda mais rapidamente.
Sites oficiais:
- Harbour no GitHub (https://github.com/harbour/core)
- Site oficial do Harbour (https://harbour.github.io/)

Vou me ater aqui somente à diferenças q podem trazer problemas e suas correções, que eu saiba corrigir ou que os amigos aqui do grupo (mestre Quitas e Leonardo principalmente) tenham me passado.

Sites oficiais:
- Harbour no GitHub (https://github.com/harbour/core)
- Site oficial do Harbour (https://harbour.github.io/)

Arqui .bat para compilar os fontes (comp.bat)

Código: Selecionar todos

Echo OFF

REM Escolha entre os vários compiladores "C" que o Harbour pode usar. (GCC, MinGW, Clang, ICC, Microsoft Visual C++ (6+), Borland C++, Watcom C, Pelles C e Sun Studio)
Set HB_COMPILER=mingw

REM Seta a pasta em que o Harbour está instalada
SET HB_INSTALL_PREFIX=c:\hb32
Set PATH=C:\Hb32\bin;C:\HB32\Comp\Mingw32\bin;%PATH%
SET HBMK_OPTIONS=

REM Chama aplicativo para compilar e linkar os fontes, passando o parâmetro o .HBP com a lista de .PRGs e Libs.
HBMK2 %1 %2
Exemplo de arquivo .hbp com as configurações, fontes .prg e Libs do projeto Harbour.

Código: Selecionar todos

////////////////////////////////////////////////////////////////////////////////
//Arquivo .hbp para compilar projetos Harbour 3.2
//Por José Quintas
////////////////////////////////////////////////////////////////////////////////

scp21h.prg        //PRG Main
GetSysG.prg       //Demais arquivos fontes (inclua quantos forem necessários)
LIBGASHB.PRG

hbcompat.ch       //Ativa compatibilidade com comandos do xharbour, tais como: (try ... catch).

 -q0              //Configurações de compilação
 -ge1
 -m
-inc
#-rebuild
 -debug
 
 xhb.hbc          //Libs a serem incluídas
 gtwvw.hbc
#gtwvg.hbc
 hbziparc.hbc
 hbxpp.hbc
 hbct.hbc
 hbtip.hbc
#hbssl.hbc
 hbwin.hbc
 
 -workdir=c:\temp\scp21h32          //Pasta onde serão armazenados os .obj
 -oc:\simplesinfo\scp21h\Scp21H32   //Pasta e nome do Executável.
 -strip


Abra o Prompt de comando, entre na pasta do seu projeto e digite: Comp SeuProjeto para que o compilador Harbour possa fazer seu trabalho.

Conceito dos principais compiladores para harbour:
- GCC (GNU Compiler Collection): Este é um dos compiladores mais comuns e é amplamente utilizado em sistemas Unix-like, incluindo Linux e macOS. Ele é compatível com o Harbour e é frequentemente usado em ambientes de desenvolvimento open source.

- MinGW (Minimalist GNU for Windows): Este é um port do GCC para o Windows, permitindo que os desenvolvedores usem as ferramentas GNU em um ambiente Windows. MinGW é compatível com o Harbour e é uma escolha popular para desenvolvimento em Windows.

- Microsoft Visual C++ (MSVC): Este é o compilador C++ da Microsoft, incluído no Visual Studio. O Harbour pode ser configurado para usar o MSVC para compilar código em ambientes Windows, aproveitando as ferramentas e bibliotecas da Microsoft.

- Borland C++ Compiler: Embora menos comum hoje em dia, o compilador Borland também é suportado pelo Harbour. Ele foi uma escolha popular no passado e ainda pode ser utilizado em alguns ambientes.

- Clang/LLVM: Este é um compilador que faz parte do projeto LLVM e é conhecido por sua modularidade e desempenho. O Clang é compatível com o Harbour e pode ser utilizado em vários sistemas operacionais, incluindo Linux, macOS e Windows.
Vou comentando aqui as futuras observações sobre o que deve ser ajustado.
Abraços.

De xHarbour 1.2.3 para Harbour 3.2

Enviado: 17 Jun 2024 09:12
por JoséQuintas
Observações:

O fonte principal não precisa ser o primeiro, mas o primeiro é usado como nome do EXE.
Caso queira definir o nome do EXE (ou lib) é usar o -oNOME

Atenção no uso de pasta fixa: -workdir=c:\temp
Isso é bom pra apagar os temporários.
Mas se trocar de projeto, e tiver fonte com mesmo nome, pode entrar fonte de um projeto no outro.
É só fazer: del c:\temp
Aqui uso um "pré-build" que faz isso, assim nunca esqueço de apagar.
Nada demais, apenas comparo se a pasta atual é a mesma ou se mudou, se mudou faço limpeza da temp.
Se continua a mesma, dá pra aproveitar o recurso de compilação incremental. -inc

De xHarbour 1.2.3 para Harbour 3.2

Enviado: 17 Jun 2024 13:05
por clodoaldomonteiro
Observações:

No xHarbour dá tranquilamente pra usar o operador LIKE, mas no Harbour tem que ser substituído por: HB_REGEXLIKE()

Exemplo:

Código: Selecionar todos

   If AlLTrim(cEMail) LIKE cRegExEmail
   //por
   If HB_RegExLike( cRegExEmail, AlLTrim(cEMail) )

De xHarbour 1.2.3 para Harbour 3.2

Enviado: 17 Jun 2024 13:09
por Itamar M. Lins Jr.
Olá!

Código: Selecionar todos

   If AlLTrim(cEMail) $ cRegExEmail
Saudações,
Itamar M. Lins Jr.

De xHarbour 1.2.3 para Harbour 3.2

Enviado: 17 Jun 2024 13:14
por clodoaldomonteiro
Caso estejam usando GTWVW, não usar o piper "|" nos parâmetros de wvw_messageBox()

Exemplo:

Código: Selecionar todos

de: wvw_messagebox(, cText, 'SCP21H - ATENÇÃO ' + HB_OemToAnsi( UserName ), MB_OK|MB_ICONERROR )
Para: wvw_messagebox(, cText, 'SCP21H - ATENÇÃO ' + HB_OemToAnsi( UserName ), MB_OK+MB_ICONERROR )

De xHarbour 1.2.3 para Harbour 3.2

Enviado: 17 Jun 2024 14:46
por Itamar M. Lins Jr.
Olá!
Regex é uma coisa LIKE é outra coisa. LIKE é o mesmo que $.(contido)

Saudações,
Itamar M. Lins Jr.