Diferença Harbour x xHarbour

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

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Diferença Harbour x xHarbour

Mensagem por JoséQuintas »

Tem algumas diferenças que não são faladas.
Agora que peguei pra testar é que estou vendo.....

No Harbour: Quando se baixam os fontes do Harbour, TUDO é baixado.

No xHarbour: Quando se baixam os fontes do XHarbour, há dois downloads: fontes do XHarbour e fontes de contribuições

Nos binários:

No Harbour: Cada contribuição tem sua própria pasta

No Xharbour: Fica tudo embolado numa pasta só, nem dá pra saber o que é contribuição ou não

Contribuições:

No Harbour: Você indica exatamente o que quer, por exemplo gtwvg.hbc e isso já trás toda configuração

No XHarbour: Acho que ele já acrescenta tudo que é LIB, então o usuário nem sabe o que está usando, e pensa que tudo faz parte do xHarbour.

Fui compilar um exemplo da OOHG, USANDO XHARBOUR, e dá falta de funções.
d:\CVSFiles\allgui\oohg\samples\oohg>hbmk2 maindemooop -workdir=c:\temp oohg.hbc -xhb
hbmk2: Processing environment options: -comp=bcc
hbmk2: Processing configuration: d:\xharbour\bin\hbmk.hbc
xHarbour 1.2.3 Intl. (SimpLex) (Build 20170902)
Copyright 1999-2017, http://www.xharbour.org http://www.harbour-project.org/
Compiling 'maindemooop.prg'...
Generating C source output to 'c:\temp\maindemooop.c'...
Done.
Lines 215, Functions/Procedures 10, pCodes 5029
c:\temp\maindemooop.c:
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
Error: Unresolved external '_HB_FUN_MAXLINE' referenced from D:\XHARBOUR\ADDONS\OOHG\LIB\WIN\BCC\OOHG.LIB|h_msgbox
Error: Unresolved external '_HB_FUN_EOM' referenced from D:\XHARBOUR\ADDONS\OOHG\LIB\WIN\BCC\OOHG.LIB|h_monthcal
hbmk2: Error: Running linker. 2
ilink32.exe @C:\Users\joseq\AppData\Local\Temp\1945qc.lnk

hbmk2: Error: Referenced, missing, but unrecognized Harbour function(s):
MAXLINE(), EOM()
Bom.... no Harbour é só usar o hbmk2.
hbmk2 -find maxline

hbct.hbc (instalado):
MaxLine()
hbmisc.hbc (instalado):
ed_MaxLine()
No XHarbour... deve ser acrescentar a CT

E não é que XHarbour também tem GTWVG !!! Alguém sabia disso?
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
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Diferença Harbour x xHarbour

Mensagem por JoséQuintas »

A GTWVG do XHarbour é igual ou anterior a do Harbour 3.0.
Não tem os PRGs referentes a GTWVG propriamente dita.

XHarbour:
gtwvg.png
Harbour:
gtwvg34.png
O interessante é que isso corresponde ao que falo da GTWVG.
O que considero GTWVG são os PRGs, e justamente isso não se vê nos exemplos, e também não tem no XHarbour.
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
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Diferença Harbour x xHarbour

Mensagem por JoséQuintas »

E o que se vê no Harbour, de pastas de contribuições, no Xharbour só dá pra ver nos fontes.
Depois de gerado o binário, nem se sabe que isso existe e é contribuição.
contrib.png
Apenas estou relatando o que estou vendo, e talvez muita gente nem tenha visto.
No final, parece tudo a mesma coisa.
Como mostrei em outro tópico, o HBMK2 funciona para os dois.
Há diferenças, não só no fonte PRG, mas também no fonte C, quanto a nomes de função.
Mas dá pra gerar um XHarbour bem mais fácil de usar, parecido com o Harbour, e com os recursos extras do hbmk2.
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
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Diferença Harbour x xHarbour

Mensagem por JoséQuintas »

Presente pra quem usa XHarbour:

Criei este fonte pra compilar as contribuições do XHarbour, apenas pra criar HBX.

Código: Selecionar todos

#include "directry.ch"

PROCEDURE Main

   LOCAL oFile, oDir, cCmd

   oDir := Directory( "*.*", "D" )
   FOR EACH oFile IN oDir
      DO CASE
      CASE ! "D" $ oFile[ F_ATTR ]
      CASE oFile[ F_NAME ] == "."
      CASE oFile[ F_NAME ] == ".."
      OTHERWISE
         cCmd := "hbmk2 " + ;
                 oFile[ F_NAME ] + "\*.prg " + ;
                 oFile[ F_NAME ] + "\*.c " + ;
                 "-o" + oFile[ F_NAME ] + " " + ;
                 "-hbx=d:\xharbour\addons\" + oFile[ F_NAME ] + ".hbx " + ;
                 "-hblib " + ;
                 "-xhb"
         ? cCmd
         Inkey(0)
         RUN ( cCmd )
      ENDCASE
   NEXT

   RETURN
Aqui o resultado, e a lista obtida com hbmk2 -find *
xharbourhbx.zip
(20.52 KiB) Baixado 81 vezes
Se usar HBMK2, basta salvar isso na pasta \xharbour\addons
Vão ter ajuda pra funções que faltarem na compilação, vão poder pesquisar nomes de função, etc.

Por exemplo
hbmk2 -find date

gtwvg.hbc (not installed):

win_invalidaterect()
wvt_invalidaterect()
wvt_update()

addons\gtwvg.hbc (not installed):

win_invalidaterect()
wvt_invalidaterect()
wvt_update()

addons\gtwvw.hbc (not installed):

win_invalidaterect()
invalidaterect()
wvw_invalidaterect()
wvw_updatewindow()
wvw_xbupdate()

addons\cgilib.hbc (not installed):

datetogmt()

addons\hbmlzo.hbc (not installed):

lzo_version_date()

addons\misc.hbc (not installed):

arrayasdate()
dateasage()
dateasarray()
dateisleap()
gaugeupdate()
statusupdate()

addons\rdd_ads.hbc (not installed):

adssetdate()
adssetdateformat()
Não é a lista do Harbour, ela é diferente.
hbmk2 -find date

Núcleo Harbour (instalado):

Date()
GetPostValidate()
GetPreValidate()
GUIPostValidate()
GUIPreValidate()
hb_Date()
hb_DateTime()
hb_FGetDateTime()
hb_FSetDateTime()
HB_ISDATE()
HB_ISDATETIME()
LUpdate()
ReadUpdated()
sxDate()
Updated()
__dbUpdate()
__HBDate()
HBDATE()

gtwvg.hbc (instalado):

wvg_InvalidateRect()
wvg_UpdateWindow()
wvt_InvalidateRect()
wvt_Update()

gtwvw.hbc (instalado):

wvw_InvalidateRect()
wvw_UpdateWindow()
wvw_xbUpdate()

hbct.hbc (instalado):

FileDate()
SetDate()

hbcurl.hbc (não instalado):

curl_getdate()
hb_curl_date()

hbhpdf.hbc (instalado):

HPDF_MarkupAnnot_SetCreationDate()
HPDF_SetInfoDateAttr()

hbhttpd.hbc (instalado):

UUrlValidate()

hbmisc.hbc (instalado):

DateToTxtRU()

hbmlzo.hbc (instalado):

lzo_version_date()

hbnf.hbc (instalado):

ft_DateCnfg()
ft_SetDate()

hbssl.hbc (não instalado):

EVP_CipherUpdate()
EVP_DecodeUpdate()
EVP_DecryptUpdate()
EVP_DigestUpdate()
EVP_EncodeUpdate()
EVP_EncryptUpdate()
EVP_OpenUpdate()
EVP_SealUpdate()
EVP_SignUpdate()
EVP_VerifyUpdate()

hbtip.hbc (instalado):

tip_DateToGMT()

hbwin.hbc (instalado):

wapi_InvalidateRect()
wapi_UpdateWindow()
__oleVariantNullDate()

hbxpp.hbc (instalado):

dbUpdate()

rddads.hbc (não instalado):

AdsSetDateFormat()

xhb.hbc (instalado):

DateTime()
hb_LogDateStamp()
ValToDate()
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
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Diferença Harbour x xHarbour

Mensagem por JoséQuintas »

Precisou de mais....
Tem contrib que não está em contrib.... rs
d:\CVSFiles\allgui\oohg\samples\oohg>hbmk2 maindemooop -xhb oohg.hbc
hbmk2: Processing environment options: -comp=bcc
hbmk2: Processing configuration: d:\xharbour\bin\hbmk.hbc
xHarbour 1.2.3 Intl. (SimpLex) (Build 20170902)
Copyright 1999-2017, http://www.xharbour.org http://www.harbour-project.org/
Compiling 'maindemooop.prg'...
Generating C source output to 'C:\Users\joseq\AppData\Local\Temp\hbmk_c44wzp.dir\maindemooop.c'...
Done.
Lines 486, Functions/Procedures 11, pCodes 5031
C:\Users\joseq\AppData\Local\Temp\hbmk_c44wzp.dir\maindemooop.c:
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
Error: Unresolved external '_HB_FUN_MAXLINE' referenced from D:\XHARBOUR\ADDONS\OOHG\LIB\WIN\BCC\OOHG.LIB|h_msgbox
Error: Unresolved external '_HB_FUN_EOM' referenced from D:\XHARBOUR\ADDONS\OOHG\LIB\WIN\BCC\OOHG.LIB|h_monthcal
hbmk2: Error: Running linker. 2
ilink32.exe @C:\Users\joseq\AppData\Local\Temp\thoj3y.lnk

hbmk2: Hint: Install package ct and input file 'addons\source\ct.hbc' for
missing Harbour function(s): eom(), maxline()
É só uma ajuda, na verdade pra xHarbour é acrescentar -lct pra adicionar a lib.
hbmk2 -find maxline

addons\source\ct.hbc (not installed):

maxline()
melhor do que ficar caçando aonde uma função está.

Não sei como o pessoal do XHarbour vive sem isso.
Os BATs devem adicionar tudo de uma vez, usando ou não...

Só expandi o fonte anterior.
A geração é apenas pra poder ter o hbx, as LIBs geradas é pra apagar.

Código: Selecionar todos

#include "directry.ch"

PROCEDURE Main

   GeraHbx( "d:\xharbour\contrib\", "d:\xharbour\addons\contrib\" )
   GeraHbx( "d:\xharbour\source\",  "d:\xharbour\addons\source\" )

   RETURN

PROCEDURE GeraHbx( cSource, cTarget )

   LOCAL oFile, oDir, cCmd

   oDir := Directory( cSource + "*.*", "D" )
   FOR EACH oFile IN oDir
      DO CASE
      CASE ! "D" $ oFile[ F_ATTR ]
      CASE oFile[ F_NAME ] == "."
      CASE oFile[ F_NAME ] == ".."
      OTHERWISE
         cCmd := "hbmk2 " + ;
                 cSource + oFile[ F_NAME ] + "\*.prg " + ;
                 cSource + oFile[ F_NAME ] + "\*.c " + ;
                 "-o" + cTarget + oFile[ F_NAME ] + " " + ;
                 "-hbx=" + cTarget + oFile[ F_NAME ] + ".hbx " + ;
                 "-hblib " + ;
                 "-xhb"
         ? cCmd
         Inkey(0)
         RUN ( cCmd )
      ENDCASE
   NEXT

   RETURN
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/
Responder