Página 1 de 1

Diferença Harbour x xHarbour

Enviado: 13 Out 2017 21:28
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?

Diferença Harbour x xHarbour

Enviado: 14 Out 2017 00:57
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.

Diferença Harbour x xHarbour

Enviado: 14 Out 2017 01:12
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.

Diferença Harbour x xHarbour

Enviado: 14 Out 2017 01:54
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()

Diferença Harbour x xHarbour

Enviado: 14 Out 2017 10:50
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