Usar LIBs de criação própria do Clipper para Harbour

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

Moderador: Moderadores

Josmar dos Santos
Usuário Nível 3
Usuário Nível 3
Mensagens: 277
Registrado em: 11 Jan 2006 18:36
Localização: Botucatu-SP

Usar LIBs de criação própria do Clipper para Harbour

Mensagem por Josmar dos Santos »

Bem pessoal eu andei pesquisando no fórum a respeito desse assunto, mas não achei nenhuma uma resposta que veio a tirar as minhas dúvidas. No Clipper eu estava usando o Ofic.lnk para colocar as LIBS que eu utilizava para compilar

Exemplo:

Código: Selecionar todos

FI OFIC.PRG, CLIENTES.PRG
LIB RELOGIO, DBFCDX
E no harbour, como proceceder?

Eu criei conforme orientação do fórum o arquivo ofic.hbp para compilar que graças a Deus está funcionando..só falta resolver esse probleminha. Seria aqui que coloca-se as LIBs?

Código: Selecionar todos

-oofic
-inc
-compr=yes
-quiet
-lxhb
-lhbwin
-lhbct
-gui
OFIC.PRG
OFICARQ.PRG
OFICFU1.PRG
OFICFU2.P
Josmar
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Usar LIBs de criação própria do Clipper para Harbour

Mensagem por JoséQuintas »

Isso mesmo.
Mas para as LIBs que necessitam algo adicional, criaram outra forma de fazer isso, como a hbwin.

Segue o que uso, acho que é um bom exemplo.
Note que não recomendam *.prg, mas eu sempre usei assim, desde o começo - minha pasta é meu projeto
Se houver arquivo .HBC, melhor usá-lo ao invés de apenas indicar a LIB com -l

Como a RDDADO não é considerada ainda como contribuição, acaba precisando algo mais.
Mas como não uso, a parte da RDDADO está iniciando com #, que indica apenas observação, sem efeito.
Apenas mantive no hbp para lembrar como é.

Código: Selecionar todos

*.prg
jpa.rc
-oJPA
hbct.hbc
hbtip.hbc
hbhpdf.hbc
hbziparc.hbc
hbmisc.hbc
hbzebra.hbc
hbnetio.hbc
#gtwvw.hbc
gtwvg.hbc

-m
-n
-es2
-w3
-compr
-winuni
-workdir=d:\temp
-inc
-strip
-mt
-quiet
-jobs=1
#
# rddado
#
#rddado.hbc
#-Id:\cvsfiles\vszakats\extras\rddado\
#-Ld:\cvsfiles\vszakats\extras\rddado\lib\win\msvc
#-lrddado
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

Usar LIBs de criação própria do Clipper para Harbour

Mensagem por JoséQuintas »

Qualquer coisa, pra consultar o manual, só digitar;
hbmk2 -help
ou
hbmk2 -longhelp


E se quiser criar uma LIB, ao invés de um EXE, só acrescentar

Código: Selecionar todos

-hblib
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/
Josmar dos Santos
Usuário Nível 3
Usuário Nível 3
Mensagens: 277
Registrado em: 11 Jan 2006 18:36
Localização: Botucatu-SP

Usar LIBs de criação própria do Clipper para Harbour

Mensagem por Josmar dos Santos »

Boa tarde Quintas, tudo bom? É o seguinte: Eu uso a LIB "WAPI" do maligno para gerar os meus relatórios. Eu queria saber se tem como colocar essa LIB no harbour para compilar e funcionar da mesma maneira que no Clipper? Os colegas já me passaram rotinas de como capturar a caixa de dialogo de impressão do Windows, mas no momento até mesmo para aprendizado queria saber se existe essa possibilidade. Se existe como proceder ela no "ofic.hbp". No Clipper colocava-se a LIB dentro da pasta e compilava junto com o ofic.lnk.

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

Usar LIBs de criação própria do Clipper para Harbour

Mensagem por JoséQuintas »

As LIBs do Clipper são no formato DOS - 16 bits.
O Harbour é 32 bits (podendo ser 64 bits também), então não dá pra usar LIBs em formato Clipper.
Talvez a hbwin tenha muitas das funções da WAPI, vai ter que confirmar como o pessoal se virou pra ter as funções da WAPI.
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
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Usar LIBs de criação própria do Clipper para Harbour

Mensagem por Toledo »

Amigos, vejam:

Funções WAPI no Harbour

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Josmar dos Santos
Usuário Nível 3
Usuário Nível 3
Mensagens: 277
Registrado em: 11 Jan 2006 18:36
Localização: Botucatu-SP

Usar LIBs de criação própria do Clipper para Harbour

Mensagem por Josmar dos Santos »

Boa noite Toledo, aproveitando, queria te fazer umas perguntas: Eu perguntei em outro tópico mas ainda nao tive respostas...essas funcções "ShowMessage, ShowWiat e CloseWindow, onde encontro? Ela faz parte de alguma LIB do harbour? Qual seria? e também gostaria de saber onde encontro material sobre o Harbour para estudar. Não posso ficar só dependendo de vocês. Têm horas que me sinto um pouco chateado, da a impressão que a gente fica incomodando. Acho que vc me entende!!!! Preciso também procurar outras fontes de conhecimento. É que o harbour tem pouca informação sobre ele. Por isso dependemos muito aqui do fórum.


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

Usar LIBs de criação própria do Clipper para Harbour

Mensagem por JoséQuintas »

Algumas coisas do Harbour não tem manual porque usa funções já existentes, que já possuem manual.
HaruPDF - Tem site próprio com manual
APIs do Windows - Funções do Windows, tem manual na Microsoft
Funções de compatibilidade com xHarbour - Tem manual no xHarbour
E outras LIBs.

Manual do hbmk2:
hbmk2 -longhelp

Pesquisar função no Harbour:

hbmk2 -find closewindow
gtwvw.hbc (installed):
wvw_lCloseWindow()
hbwin.hbc (installed):
wapi_CloseWindow()

Manual do Harbour, desde que tenha os arquivos todos do CVS, e a versão do VSazakats:
hbmk2 -doc ferase

TEMPLATE
--------
Function

NAME
----
FErase()

CATEGORY
--------
API

SUBCATEGORY
-----------
FileSys

ONELINER
--------
Erase a file from disk

SYNTAX
------
FErase( <cFile> ) --> nSuccess

ARGUMENTS
---------
<cFile> Name of file to erase.

RETURNS
-------
<nSuccess> 0 if successful, -1 if not

DESCRIPTION
-----------
This function deletes the file specified in <cFile> from the disk.
No extensions are assumed. The drive and path my be included in
<cFile>; neither the SET DEFAULT not the SET PATH command controls
the performance of this function. If the drive or path is not used,
the function will look for the file only on the currently selected
directory on the logged drive.

If the function is able to successfully delete the file from the
disk, the value of the function will be 0; otherwise a -1 will
be returned. If not successful, additional information may be
obtained by calling the FError() function.

Note: Any file to be removed by FErase() must still be closed.


EXAMPLES
--------
#include "fileio.ch"
IF FErase( "test.txt" ) != F_ERROR
? "File successfully erased"
ELSE
? "File can not be deleted"
ENDIF

SEEALSO
-------
FError(), FRename()


TEMPLATE
--------
Command

NAME
----
ERASE

CATEGORY
--------
Command

SUBCATEGORY
-----------
FileSys

ONELINER
--------
Remove a file from disk

SYNTAX
------
ERASE <xcFile>

ARGUMENTS
---------
<xcFile> Name of file to remove

DESCRIPTION
-----------
This command removes a file from the disk. The use of a drive, directo-
ry, and wild-card skeleton operator is allowed for the root of the
filename. The file extension is required. The SET DEFAULT and SET PATH
commands do not affect this command.

The file must be considered closed by the operating system before it
may be deleted.

EXAMPLES
--------
ERASE test.txt

SEEALSO
-------
CurDir(), File(), FErase(), DELETE FILE
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
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Usar LIBs de criação própria do Clipper para Harbour

Mensagem por Toledo »

Josmar dos Santos escreveu:essas funcções "ShowMessage, ShowWiat e CloseWindow, onde encontro? Ela faz parte de alguma LIB do harbour?
Acho que elas não fazem parte do Harbour não, principalmente estas duas primeiras.
Josmar dos Santos escreveu:gostaria de saber onde encontro material sobre o Harbour para estudar.
Veja:

http://harbour.github.io/doc/

http://www.marinas-gui.org/projects/harbour_manual/

http://www.harbourdoc.com.br

http://www.elektrosoft.it/tutorials.asp

http://www.fivetechsoft.com/harbour-docs/harbour.html

https://fivewin-contributions.googlecod ... arbour.pdf

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Josmar dos Santos
Usuário Nível 3
Usuário Nível 3
Mensagens: 277
Registrado em: 11 Jan 2006 18:36
Localização: Botucatu-SP

Usar LIBs de criação própria do Clipper para Harbour

Mensagem por Josmar dos Santos »

Obrigado aos colegas Toledo e Quintas pela força. Consegui resolver vários probleminhas, mas gostaria de fazer outra pergunta a vocês. Talvez nem faça parte do harbour, mas sim do sistema operacional windows 7. Eu usava o XP . No XP quando eu compilava e gerava os errors Base, dava-se o quit e a listagem de erro aparecia. Já no Windows 7 não consigo ver em quais locais os erros estão aparecendo, pois após dar o quit, o programa fecha muito rápido. Queria saber como os colegas fazer para ver a listagem do mesmo. Obs-> Compilo pelo prompt do dos...

Josmar
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Usar LIBs de criação própria do Clipper para Harbour

Mensagem por Toledo »

Amigo, uma solução seria alterar o errorsys() e colocar uma pausa depois de listar o caminho do erro. Aqui no fórum existe vários tópicos com este assunto, por exemplo:
https://pctoledo.org/forum/viewto ... =4&t=15587

tag: errorsys

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Josmar dos Santos
Usuário Nível 3
Usuário Nível 3
Mensagens: 277
Registrado em: 11 Jan 2006 18:36
Localização: Botucatu-SP

Usar LIBs de criação própria do Clipper para Harbour

Mensagem por Josmar dos Santos »

Toledo, muito legal esse seu sistema "PCTerror", eu testei ele no CLIPPER52 e funcionou legal. Queria saber como fazer para compilar no Harbour e linkar o mesmo? Li esse tópico, mas não achei os comandos de como fazer o mesmo procedimento em Harbour. Te confesso q estou pesquisando no fórum.



Josmar
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Usar LIBs de criação própria do Clipper para Harbour

Mensagem por Toledo »

Josmar, é só incluir o arquivo PCTerror.prg no seu arquivo HBP para ser compilado junto com os outros arquivos PRG do seu programa. Lembrando de editar o arquivo PCTerror.prg para corrigir o comando e:descriptio e troque por e:description.

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Josmar dos Santos
Usuário Nível 3
Usuário Nível 3
Mensagens: 277
Registrado em: 11 Jan 2006 18:36
Localização: Botucatu-SP

Usar LIBs de criação própria do Clipper para Harbour

Mensagem por Josmar dos Santos »

Ok Toledo, agora funcionou..vou analisar os erros e vou tentar solucionar.....

Só resumindo o que estou tentando fazer para vc ter uma base: Eu uso a WAPI.EXE (Maligno) para imprimir os meus relatórios. No clipper eu uso o comando SWPRUMCMD para capturar o mesmo. No harbour tive problemas porque ele não reconhecia esse comando. Até que consegui descobrir com a ajuda de vocês que teria q colocar a LIB hbblink para compilar. Consegui compilar, mas quando fui fazer o filtro de código por cliente no relatório, ele está gerando erros que não ocorriam no clipper. Esses erros eu não conseguia ver devido os sistema fechar e não travar para emitir os erros como era feito no clipper. Agora vou ver os erros....só sei de uma coisa...está dando erros de array base 1068...mas isso ainda é outra História...vou tentar resolver, qualquer coisa eu peço ajuda a vocês.

--> Já estou estudando de como elaborar relatórios através da função WIN_PRN, mas leva tempo. Por enquanto para aliviar o pouco o stress do cliente, prefiro ainda trabalhar do jeito antigo..

Josmar
Josmar dos Santos
Usuário Nível 3
Usuário Nível 3
Mensagens: 277
Registrado em: 11 Jan 2006 18:36
Localização: Botucatu-SP

Usar LIBs de criação própria do Clipper para Harbour

Mensagem por Josmar dos Santos »

Toledo, conforme eu havia comentando acima, no clipper esse meu código não dava problemas, mas no harbour gerou erros. Será que terei q alterar algum código?

Vou postar duas imagens e também o código:


Imagem do PCTerror:

Imagem


Imagem após colocar a função: xhb_ErrorSys():

Imagem


Fontes:

Código: Selecionar todos

FUNCTION FUN_IMP1
DO CASE
   CASE LASTKEY()=27
        RETURN 0
   CASE LASTKEY()=-1
        VSTRING=SPACE(78)
        SET CURSOR ON
        @ 24,11 SAY "Procurar por: "
        @ 24,25 GET VSTRING PICT "@S44"
        READ
        SET CURSOR OFF
        IF !LASTKEY()=27
           IF !EMPTY(VSTRING)
              LOCATE FOR UPPER(ALLTRIM(VSTRING)) $ &(VINDEX)
              IF FOUND()
                 FOR I=1 TO FCOUNT()
                     IF ALLTRIM(VSTRING) $ FIELDGET(I)
                        KEYBOARD CHR(26)+REPLICATE(CHR(4),I-1)
                        EXIT
                     ENDIF
                 NEXT
              ENDIF
           ENDIF
        ENDIF
   CASE LASTKEY()=-2 .AND. VALTYPE(VSTRING)="C"
        SKIP
        LOCATE REST FOR ALLTRIM(VSTRING) $ &(VINDEX)
        IF FOUND()
           FOR I=1 TO FCOUNT()
               IF ALLTRIM(VSTRING) $ FIELDGET(I)
                  KEYBOARD CHR(26)+REPLICATE(CHR(4),I-1)
                  EXIT
                ENDIF
           NEXT
        ELSE
           KEYBOARD CHR(0)
        ENDIF
   CASE LASTKEY()=-5 // F6
        FICA:=.T.
        DO WHILE FICA=.T.
           nVias:=1
           cTela2:=SAVESCREEN(20,33,23,48)
           GWEXPLODE(20,34,22,46,200,"T","BG+/B")
           MENSAGEM("Informe a quantidade de vias a serem impressas")
           @ 20,35 SAY PADC(" N§ vias ",9,"Ä") COLOR "BG+/B"
           SET CURSOR ON
           @ 21,39 GET nVias PICT "9" COLOR "W+/N"
           READ
           IF LASTKEY()=27
              FICA:=.F.
           ELSE
              IF nVias=0
                 if alert("Deseja cancelar a impress„o ?",{"N„o","Sim"})=2
                    return 1
                 endif
              ELSE
                 FICA:=.F.
              ENDIF
           ENDIF
           SET CURSOR OFF
           RESTSCREEN(20,33,23,48,cTela2)
        ENDDO
        if IMPRESSORA="Impressora"
           aPrinters:=GETPRINTERS()
           VT:=LEN(aPrinters)
           IF VT=0
              IMPRESSORA:="Paralela (local)"
              cImp:="LPT1" /* ou p/impres.em rede colocando o caminho:
                              cImp:="\\pc3\epson
                           */
              FOR I=1 TO nVias
                  COPY FILE(ARQUIVO+".PRN") TO (cImp)
              NEXT
           ELSEIF VT=1
              IMPRESSORA:=aPrinters[1,2]
              cImp:=CHARREM(":",aPrinters[1,3])
           ELSE
              aImpressora:={}
              FOR I=1 TO VT
                  AADD(aImpressora,aPrinters[I,2]) // Local onde está gera o erro
              NEXT
              cColor:=SETCOLOR()
              ctela1:=SAVESCREEN(14,15,23,64)
              JANELA1(14,16,VT+15,63,"Sele‡„o de impressora")
              SETCOLOR(CONTECOR[4])
              IF (OP:=ACHOICE(15,17,22,62,aImpressora))!=0
                 IMPRESSORA=aImpressora[OP]
                 cImp:=CHARREM(":",aprinters[OP,3])
              ELSE
                 // Verifica qual ‚ a impressora padr„o
                 OP=0
                 FOR I=1 TO VT
                     IF aPrinters[I,1]=.T.
                        OP=I
                     ENDIF
                 NEXT
                 IMPRESSORA:=aPrinters[OP,2]
                 cImp:=CHARREM(":",aPrinters[OP,3])
              ENDIF
              SETCOLOR(cColor)
              RESTSCREEN(14,15,23,64,ctela1)
           ENDIF
        endif
        DELETE FILE("LOG.TXT")
        SWPRUNCMD("WAPI -PRINT:"+CHR(34)+IMPRESSORA+CHR(34)+";"+CHR(34)+ARQUIVO+".PRN"+CHR(34)+";"+CHR(34)+"Clientes - Tipo Ficha"+CHR(34)+";F;"+CHR(34)+"A"+CHR(34)+";F;"+str(nVias,1,0)+";F;LOG.TXT",0,"","")
        lSucesso:=.f.
        IF FILE("LOG.TXT")
           IF ALLTRIM(MEMOREAD("LOG.TXT"))="0"
              lSucesso:=.t.
           ENDIF
           DELETE FILE("LOG.TXT")
        ENDIF
        IF lSucesso=.f.
           ALERT("Falha na tentativa de impress„o")
        ENDIF
   CASE LASTKEY()=1
        GOTO TOP
   CASE LASTKEY()=6
        GOTO BOTT
ENDCASE
@ VULT_POS,78 SAY CHR(176) COLOR "W+/B"
VULT_POS=3+(((RECNO()*100)/VQUAN_REG)/5)
IF RECNO()=1
   VULT_POS=3
ENDIF
IF VULT_POS=23
   VULT_POS=22
ENDIF
@ VULT_POS,78 SAY CHR(219) COLOR "GR+/B"
RETURN 1


Josmar
Responder