De xHarbour 1.2.3 para Harbour 3.2

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
clodoaldomonteiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 821
Registrado em: 30 Dez 2006 13:17
Localização: Teresina-PI
Contato:

De xHarbour 1.2.3 para Harbour 3.2

Mensagem 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.
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

De xHarbour 1.2.3 para Harbour 3.2

Mensagem 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
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
clodoaldomonteiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 821
Registrado em: 30 Dez 2006 13:17
Localização: Teresina-PI
Contato:

De xHarbour 1.2.3 para Harbour 3.2

Mensagem 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) )
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

De xHarbour 1.2.3 para Harbour 3.2

Mensagem por Itamar M. Lins Jr. »

Olá!

Código: Selecionar todos

   If AlLTrim(cEMail) $ cRegExEmail
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
clodoaldomonteiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 821
Registrado em: 30 Dez 2006 13:17
Localização: Teresina-PI
Contato:

De xHarbour 1.2.3 para Harbour 3.2

Mensagem 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 )
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

De xHarbour 1.2.3 para Harbour 3.2

Mensagem por Itamar M. Lins Jr. »

Olá!
Regex é uma coisa LIKE é outra coisa. LIKE é o mesmo que $.(contido)

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Responder