Clipper On Line • Ver Tópico - Passando a limpo: guia pra Harbour e LIBs

Passando a limpo: guia pra Harbour e LIBs

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

 

Passando a limpo: guia pra Harbour e LIBs

Mensagempor JoséQuintas » 08 Fev 2017 12:10

Já comentei por aqui, vale pra usuários e vale pra nós, incluindo Harbour, LIBs, Clipper, etc.
Não precisa decorar o detalhe de cada coisa do Harbour, mas sim o conceito.

Como se usa o harbour?

- Vai precisar do Harbour, que vai baixar de algum lugar
- Vai precisar do Compilador C, que vai baixar de algum lugar
- Pode precisar da LIB gráfica, que vai baixar de algum lugar

Vai configurar no PATH as pastas do Harbour e do compilador C.

De alguma forma, precisa indicar aonde estào os arquivos H, CH, LIB, etc.

O HBMK2 faz quase tudo automático, o que não for automático é só dizer pra ele as informações adicionais que ele precisa.

O que pode entrar no uso do HBMK2:

- arquivos PRG
- arquivos CH
- arquivos FMG (telas HMG equivalentes a CH)
- arquivos LIB
- arquivos RC
- arquivos C
- arquivos DLL (pra gerar uma LIB intermediária)

Além desses, tem arquivos auxiliares do HBMK2, que podem conter uma configuração já preparada, às vezes parcial, às vezes total

- arquivos HBP
- arquivos HBM
- arquivos HBC

1) Numa regra geral, os programas serão pesquisados no PATH

Então primeira coisa: colocar Harbour\bin no path, e a pasta do compilador C no path

SET PATH=%PATH%;d:\harbour\bin;d:\harbour\comp\mingw\bin

2) O Harbour também tem algumas variáveis de controle, algumas são apenas para o caso do HBMK2 não conseguir detectar sozinho.

SET HB_COMPILER=mingw
SET HB_COMPILER_VER=0503

3) Esta variável deveria ser só pra geração do Harbour, mas no 3.2 precisa dela

SET HB_INSTALL_PREFIX=c:\harbour

Se misturar coisas no PATH, vai ser misturado na compilação.
Então não basta adicionar Harbour no PATH, precisa ver se não tem vários Harbour no PATH.

4) Se usar bcc ou msvc, tem mais variáveis que o compilador C/linqueditor podem utilizar, pra buscar arquivos include e LIB

SET INCLUDE=
SET LIB=

Harbour pronto pra uso.
Clipper seria parecido, apenas menos configurações.
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/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Passando a limpo: guia pra Harbour e LIBs

Mensagempor JoséQuintas » 08 Fev 2017 12:15

O mesmo que é vantagem, pode se tornar desvantagem.
O Harbour aceita compiladores C diferentes.
A vantagem é que os mesmos fontes atendem qualquer sistema operacional.
A desvantagem é, às vezes, você precisa procurar em separado o compilador C.

Mais chato ainda:
Você pode querer usar determinada LIB, que não aceita os mesmos compiladores C do Harbour.

Então vai ser importante escolher um conjunto de ferramentas correto.
Não adianta ter lib que usa BCC, se o Harbour não aceitar BCC.
Não adianta ter um Harbour que aceita MSVC, se vai usar uma LIB que não aceita MSVC.
Por enquanto o MINGW é o único compilador C que é aceito em tudo.

Pra conjuntos diferentes.... pode precisar de Harbour diferente.
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/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Passando a limpo: guia pra Harbour e LIBs

Mensagempor JoséQuintas » 08 Fev 2017 12:20

As LIBs....

Tem LIB que é pra Harbour, tem LIB que é pra XHarbour, e tem LIB que é para os dois.
Muitas vezes elas causam você DESAPRENDER a como usar o Harbour.
Mas é o jeito delas atenderem Harbour e XHarbour.
O que é pior: ter trabalho extra pra LIB, ou não ter a LIB?

Cabe a cada um tentar encontrar seu equilíbrio disso tudo.
Talvez as LIBs não façam porque ninguém pede, talvez quem trabalhe com a LIB não saiba fazer pra Harbour e precise ajuda, pode ser qualquer coisa.
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/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Passando a limpo: guia pra Harbour e LIBs

Mensagempor JoséQuintas » 08 Fev 2017 12:38

No passado já briguei muito pra configurar LIbs gráficas, sempre foi chato.
Algumas Harbour próprio, compilador C específico, etc.
Mas consegui uma coisa simples que dá pra colocar todas juntas.
Só apliquei o que está na primeira mensagem, e criei BATs próprios.

Os BATs estão grandinhos, mas dá pra dizer que não tem nada além do normal.
Atendem 4 LIBs, que juntas devem ter mais de 3.000 BATs.... comparado a isso são pequenos.

1) BAT de configuração

Apenas cria as variáveis de ambiente.
HB_MYGUI pra dizer o nome, HB_MYGUI_PATH pra dizer aonde está

2) BAT de criação da LIB

Apenas tem a lista de pastas, e o nome que será dado à LIB que representa cada pasta.
E uma compilação padrão, compila tudo dentro da pasta, e dá aquele nome indicado
Acrescenta #include, pasta de include, etc.

3) BAT de compilação

Apenas compila, usando parâmetros padrão, acrescentando as pastas e arquivos relacionados com essa LIB

Tudo no padrão do HBMK2.
Apenas a lista é passada para o HBMK2.

Agora dá pra quem quiser, testar o que quiser.
OOHG, HMG, HWGUI, HMG Extended

É baixar o que quiser, na pasta que quiser, alterar MGCONFIG.BAT pra ficar com os nomes de pasta corretos, conforme instalar, e usar.

Se depois quiser criar um HBP fixo para um projeto grande, só copiar os comandos do BAT.

Nada na sua máquina vai ser alterado. um EXIT da janela de prompt e pronto.
Se depois quiser apagar, só apagar as pastas que criou.

TUDO DEPENDE DO SEU HARBOUR, e da LIB.

Tem um Harbour usando mingw, pode testar todas com mingw
Tem um Harbour usando bcc, pode testar todas com bcc
Tem um Harbour usando msvc, pode testar todas com msvc

Posso adiantar o seguinte:

- Com Harbour 3.4 e MSVC, só funciona HWGUI
- Com Harbour 3.4 e BCC, NADA, nem o próprio Harbour funciona
- Com Harbour 3.4 e MINGW, tudo funciona
- Detalhe a mais: OOHG baixada do link também não compilou, somente os fontes baixados do CVS (ou será SVN?)
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/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Passando a limpo: guia pra Harbour e LIBs

Mensagempor JoséQuintas » 08 Fev 2017 13:27

Complemento:

Tem que saber mexer no Harbour, não na LIB, pra resolver questões de compilação.

Vamos lá na pasta hmg\samples\basics\multiwin

mgcompile *.prg *.rc -odemo

Generating C source output to 'c:\temp\miscproc.c'... Done.
d:\harbour\comp\mingw\bin\windres.exe: no resources
hbmk2: Error: Running resource compiler. 1


Deu erro, o que fizemos de errado?
O erro se refere a compilação de resource (arquivo RC), vamos olhar a pasta

20/04/2010  09:37                 0 multiwin.rc


Se é tamanho zero, é o arquivo que está errado, não deveria existir.

d:\harbour\comp\mingw\bin\windres.exe: can't open file `C:\hmg.3.4.0\RESOURCES\Windows7.Manifest': Invalid argument
hbmk2: Error: Running resource compiler. 1


isso está em resource, então foi um arquivo de resource.
Vamos ver o comando no bat, pra ver o que ele adiciona de resource.

hbmk2 %*  ^
   %HB_MYGUI_PATH%\resources\hmg32.rc ^


ok, por essa variável sabemos a pasta e vamos lá no hmg32.rc

#include "_hmg_resconfig.h"

// MANIFEST FOR CREATE 'XP-STYLE' APPLICATIONS

1 24 HMGRPATH\Windows7.Manifest

HMG_FINGER      CURSOR      HMGRPATH\FINGER.CUR
HMG_DRAGLIST    CURSOR      HMGRPATH\DRAGLIST.CUR
HMG_DRAGUP      CURSOR      HMGRPATH\DRAGUP.CUR
HMG_DRAGDOWN    CURSOR      HMGRPATH\DRAGDOWN.CUR


Ok, ela tem um esquema próprio pra descobrir quais são as pastas.
Não precisa disso pro HBMK2, então só simplificar o arquivo

1 24 Windows7.Manifest

HMG_FINGER      CURSOR      FINGER.CUR
HMG_DRAGLIST    CURSOR      DRAGLIST.CUR
HMG_DRAGUP      CURSOR      DRAGUP.CUR
HMG_DRAGDOWN    CURSOR      DRAGDOWN.CUR


mgcompile *.prg -odemo

to `_HB_FUN_WIN_P2N'
d:/cvsfiles/hmgall/hmg/lib/win/mingw/libhmg.a(h_windows.o):h_windows.c:(.data+0x1458): undefined reference to `_HB_FUN_CALLDLL32'
collect2.exe: error: ld returned 1 exit status
hbmk2: Error: Running linker. 1
d:\harbour\comp\mingw\bin\gcc.exe c:/temp/demo.o c:/temp/miscproc.o c:/temp/hbmk_odoxys.o  c:/temp/hmg32.reso  -m32 -Wl,--no-demangle -mconsole -Wl,--start-group -lhmg -lhmg_tstring -lcrypt -ledit -leditex -lgraph -lhbvpdf -lreport -lmsvfw32 -lvfw32 -lhbct -lhbziparc -lhbmzip -lminizip -lhbwin -lpng -lhbmisc -lhbnf -lhbhpdf -lhpdf -lxhb -lhbextern -lhbdebug -lhbvmmt -lhbrtl -lhblang -lhbcpage -lgtcgi -lgtstd -lgtpca -lgtwin -lgtwvt -lgtgui -lhbrdd -lhbusrrdd -lrddntx -lrddcdx -lrddnsx -lrddfpt -lhbrdd -lhbhsx -lhbsix -lhbmacro -lhbcplr -lhbpp -lhbcommon -lhbmainstd -lkernel32 -luser32 -lgdi32 -ladvapi32 -lws2_32 -liphlpapi -lwinspool -lcomctl32 -lcomdlg32 -lshell32 -luuid -lole32 -loleaut32 -lmpr -lwinmm -lmapi32 -limm32 -lmsimg32 -lwininet -lhbpcre -lhbzlib   -Wl,--end-group -s -odemo.exe  -Ld:/harbour/lib/win/mingw -Ld:/cvsfiles/hmgall/hmg/lib/win/mingw

hbmk2: Hint: Correct possibly mistyped function name(s):
       WIN_P2N() -> win_Prn()
hbmk2: Error: Referenced, missing, but unrecognized Harbour function(s):
       WIN_P2N(), CALLDLL32()
hbmk2: Hint: Add input file 'xhb.hbc' instead of specifying raw library using
       '-lxhb' or 'libs=xhb'.


lógico... temos que olhar isso de forma simplificada, só a parte que interessa

to `_HB_FUN_WIN_P2N'
d:/cvsfiles/hmgall/hmg/lib/win/mingw/libhmg.a(h_windows.o):h_windows.c:(.data+0x1458): undefined reference to `_HB_FUN_CALLDLL32'

hbmk2: Hint: Correct possibly mistyped function name(s):
       WIN_P2N() -> win_Prn()
hbmk2: Error: Referenced, missing, but unrecognized Harbour function(s):
       WIN_P2N(), CALLDLL32()
hbmk2: Hint: Add input file 'xhb.hbc' instead of specifying raw library using
       '-lxhb' or 'libs=xhb'.


São funções não existentes no Harbour 3.4. Nesse caso criei tapa-buraco.

FUNCTION Win_P2N(...); RETURN Win_Prn( ... )
FUNCTION CallDll32( ... ); RETURN CallDll( ... )


d:\CVSFiles\hmgall\hmg\SAMPLES\Basics\MULTIWIN>mgcompile *.prg -odemo

   3369472 ->   1183232   35.12%    win32/pe     demo.exe


Pronto.
Não foi nada demais, apenas soluções estilo Clipper, que usamos há mais de 20 anos.

Os fontes da HMG e HMG extended são compatíveis, até determinado ponto.
Vamos tentar com HMG Extended

mgcreate
mgcompile *.prg -odemo

hbmk2: Hint: Add input file 'xhb.hbc' for missing Harbour function(s):
       HB_ISNIL(), CallDll()
hbmk2: Hint: Add input file 'hbmisc.hbc' for missing Harbour function(s):
       CallDll()
hbmk2: Hint: Add input file 'hbwin.hbc' for missing Harbour function(s):
       win_Prn()


O próprio HBMK2 já avisou o que fazer.

[code]
mgcompile *.prg -odemo hbmisc.hbc hbwin.hbc xhb.hbc

   2199040 ->    746496   33.95%    win32/pe     demo.exe


Pronto.

O que foi necessário?
Apenas saber compilar como Harbour/HBMK2, e resolver mensagens de erro do Harbour/HBMK2.

Deu erro em alguma coisa, olhar lá aonde deu erro.
Deu falta de alguma coisa, procurar aonde está essa coisa.
A gente faz isso há mais de 20 anos, uma vez mais não faz diferença.

Isso é diferente de usar um pacote fechado, com BATs confusos, que a gente dificilmente consegue localizar qual foi o problema.
E que a gente ouve como resposta: resintale tudo, configure tudo, use os BATs que vém com ela.

É a diferença entre:

- sei o que estou fazendo, se deu erro vamos ver como resolver

- o que será que fiz errado, o que será que ela precisa, devo ter bagunçado tudo

Enquanto de uma forma, você fica cada vez mais craque e certo do que faz, da outra parece que você está sempre errado e desaprendendo.

É por isso que muitos acabam nem tentando testar algo novo.
Ficam com a sensação de que não sabem fazer, e vão estragar a configuração que criaram em sua máquina.

Ao passo que se entenderem o que estão fazendo, vão longe.
Conseguem configurar e desconfigurar tudo à vontade.

Como eu sempre digo:
É ficar craque no básico. O básico resolve tudo, e o básico não se altera nunca.

Nota: No caso desse exemplo, ele não é compatível com OOHG ou HWGUI, por isso nem tentei compilar com elas.
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/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Passando a limpo: guia pra Harbour e LIBs

Mensagempor JoséQuintas » 08 Fev 2017 13:37

Faltou um complemento:

Na hora de testar, eu pensei assim: eu sei usar Harbour, a LIB usa Harbour, então não pode ser diferente.
Foi assim que cheguei a esses BATs.

Não fiz nada demais.
É a mesma coisa que fazemos há mais de 20 anos.
Apenas não concordei que deveria ser diferente.
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/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Passando a limpo: guia pra Harbour e LIBs

Mensagempor JoséQuintas » 12 Fev 2017 11:02

allgui.png


É um único EXE.
Tem GTWVG fazendo o que a original não faz
Tem HMG Extended trabalhando em thread, que a original não faz
Tem HWGUI e HMG Extended no mesmo EXE, que as originais não fazem.

Qual o uso prático disso? Talvez nenhum.

Apenas é prova do que sempre falo: se isso tudo é Harbour, é trabalhar igual Harbour.
Se tem limitação, não é do Harbour.

Tentem imaginar: todas as LIBs tem rotinas similares, rotinas que existem na hbwin e gtwvg, rotinas de API do Windows, ou quase isso..
Poderiam começar por essas rotinas, unificar tudo no Harbour.
Pode servir apenas pra reduzir fontes das LIBs, tudo bem.
Mas pode ser o começo de uma unificação geral: Conforme os fontes das LIBs forem sendo reduzidos, é ir vendo o que sobra.

É... mas tem o xHarbour... isso não serviria para o xHarbour...
Ou talvez seja o caso de acrescentar no xHarbour o mesmo esquema de LIBs pra Windows do Harbour...
Aí ficaria tudo igual !1!
Harbour mais completo, xHarbour mais completo, LIBs mais compatíveis....
Ou... do jeito que está... uma coisa atrapalhando a outra, atrapalhando até os programadores de entenderem o que estão fazendo.

Tenho só noção básica de usar HMG
Tenho só noção básica de usar HWGUI
Tenho só noção básica de usar API do Windows
Não tenho a menor idéia de como usar linguagem C
Não sou expert, apenas estou aplicando o que aprendi de Harbour.
Apenas tentando provar que é possivel.
Não tenho conhecimento pra mexer a fundo nas LIBs, só espero chamar a atenção de quem saiba...
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/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Passando a limpo: guia pra Harbour e LIBs

Mensagempor JoséQuintas » 12 Fev 2017 18:22

As três HMG usam o mesmo esquema interno: usam uma variável pública.

A HMG usa direto a variável _HMG_SYSDATA

Tanto HMG Extended quanto OOHG, usam um #xtranslate que dá a impressão de não ser o array, mas continua sendo o array.
Isso fica em i_var.ch

#xtranslate _OOHG_ActiveControlInfo  => _OOHG_AllVars \[   1 \]
#xtranslate _OOHG_ActiveFrame        => _OOHG_AllVars \[   2 \]


No fonte aparece o primeiro nome, parecendo uma variável comum, mas é o array PUBLIC.
Por isso ficou mais fácil um ajuste parcial pra multithread, porque esse CH já altera todos os fontes de uma vez.
Funcionou em thread depois da mesma alteração feita pra HMG Extended.

Devido aos detalhes, imagino que as "HMG" vão ter muita coisa interna em comum, e não vai dar pra "misturar no bolo".
Talvez eu tente pra ver o que dá, só por curiosidade.
Por enquanto, a impressão é que OOHG é apenas uma HMG com maquiagem, permitindo simular OOP nos fontes.

      #xtranslate <w> . \<c\> . \<p: DisplayValue, Position, ForeColor\> ;
            => GetProperty( <(w)>, \<(c)\>, \<(p)\> ) ;;


Quando se escreve no fonte, como exemplo, form1.button.color, isso é traduzido pra GetProperty( "form1", "button", "color" )
Seria essa a simulação OOP.
Por isso não funciona &( "form1.button.color" ), porque isso faz parte do pré-processador, só vale no fonte durante a compilação, e não pra usar na execução.

É só pra curiosidade, não quer dizer que seja melhor ou pior por causa disso.
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/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Passando a limpo: guia pra Harbour e LIBs

Mensagempor JoséQuintas » 13 Fev 2017 19:11

Reduzi o tamanho, e acrescentei opções.
Vejam como ficou, se não está bem claro.

Por este bat configuro variáveis de ambiente HB_COMPILER, HB_COMPILER_VER, HB_MYGUI e HB_MYGUI_PATH
É um único parâmetro, pode ser mingw, msvc, hmg, oohg, hmgextended ou hwgui

mgconfig.png


A criação de CADA UMA das LIBs, de cada LIB gráfica.
Cortei o título, o primeiro bloco seria o :CreateSingle, que gera tudo.

Vai ser gerada somente a que estiver na variável HB_MYGUI.
É só um nome de lib, o nome da pasta aonde está a lib, e parâmetros adicionais.
pushd e popd são pra salvar/restaurar pasta atual.

mgcreate.png


E depois a compilação.Vou criando a linha de comando e executo depois.
Nada demais, a pasta INCLUDE das LIBs, e a lista de LIBs criadas no mgcreate.
Não sei se ficaram com os nomes originais, mas o resultado é o mesmo.

mgcompile.png


No final tá menor que antes, e com opções a mais.

Acho que dá pra usar um esquema parecido pra xHarbour....

De vantagem geral:
- dá pra ver o que compõe cada lib de cada biblioteca
- dá pra ver o que precisa pra compilar
- dá pra ver LIBs que precisam ajuste pra -w3 -es2

BCC não tá na lista, mas tá fácil acrescentar.
Inclusive tem uma parte pra ele, mas não sei se aquilo faz parte da lib gráfica ou do bcc.

São 4 LIBs: OOHG, HWGUI, HMG e HMG Extended
Tá preparado pra mingw, msvc, e bcc (bcc não funciona no 3.4)

O bom é o HBMK2, não os BATs. Os BATs só fizeram uso dele.
Os mesmos comandos dos BATs poderiam estar em um HBP.

Falta um HBMK2 pro xHarbour. Aí seria só fazer igual com ele.

Lembra do Clipper?
Clipper test -m -n -w3 -es2
Rtlink fi test lib clipper lib extend lib dbfntx

numa linha só
hbmk2 test -m -n -w3 -es2 lib clipper lib extend lib dbfntx

trocando lib por -l
hbmk2 test -m -n -w3 -es2 -lclipper -lextend -ldbfntx

mais de 20 anos usando isso, trocar LIB por -l não deveria confundir.

O resto, recursos a mais, é ir aprendendo e acostumando

E o HBC ?
Compara o HBC com um LNK
RTLINK @arquivo.lnk
É um conjunto de comandos pra facilitar
Também usamos algo parecido por mais de 20 anos, só alterou de LNK pra HBC.

E tudo ganhou recursos extras, porque temos mais opções extras de uso.

No final os BATs não são nada demais, só pra economizar digitação, usando o que estamos acostumados.

Agora vai tentar entender os BATs das LIBs gráficas que vém com elas.... eita coisa complicada.... nem parece Harbour...
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/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Passando a limpo: guia pra Harbour e LIBs

Mensagempor JoséQuintas » 17 Fev 2017 12:15

bathmg.png


Mistura de BAT e fonte de programa.... rs

:CheckSetup - rotina que apenas confere o setup básico

:CreateSingle -rotina que cria um simples arquivo lib

:CreateGui - rotina que cria as libs de determinada Gui

:CreateAll - rotina que cria todas as Guis, e lista todas no final

:Help - rotina de ajuda

De diferente, que foi novidade pra mim neste ano:

- pushd, popd - salva/restaura diretório atual
- call :sub - chama sub-rotina do proprio bat, como PROCEDURE/FUNCTION do Harbour
- %* - esta é uma forma de indicar TODOS os parâmetros de uma vez, acaba não limitando a 9 ( %1 %2 %3 %4 %5 %6 %7 %8 %9 )
- setlocal - define que as variáveis alteradas serão de uso somente no bat

O build é um programa extra que criei, de meu uso, que inicialmente apenas controlava número de versão, mas agora também apaga a pasta c:\temp quando troco de pasta, assim não mistura arquivos de projetos diferentes.
Está como opcional.

Lembrando: nem precisava do BAT, poderiam ser HBPs

- Um projeto (HBP) pra cada arquivo lib
- Um projeto (HBP) para cada GUI, contendo como sub-projetos os HBPs de seus arquivos lib
- Um projeto (HBP) contendo como sub-projetos os HBPs das GUIs

Os BATs ficaram interessantes, mas não seriam nada sem o HBMK2
o HBMK2 pode substituir os BATs, mas os BATs NÃO podem substituir o HBMK2

Um ponto interessante pra mistura: arquivos HBC atrapalham. Por exemplo, não adianta um HBC indicando projeto HWGUI, se dentro do projeto tem HMG, iria pegar #define errados.
Acabei ficando na dúvida se o HBMK2 deve continuar obrigando HBC pra determinadas situações.
.
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/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes




Retornar para Contribuições, Dicas e Tutoriais

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 15 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro