Página 3 de 4

Usar Harbour 3.4 + Mingw 5.1 Top com 3 passos!

Enviado: 16 Abr 2016 20:44
por JoséQuintas
Ele foi alterado.

Dica:

O endereço do Harbour 3.4 no github é este:

https://github.com/vszakats/harbour-core

descendo a página inicial, vai chegar neste trecho:
Harbour unstable binaries (updated after each commit)

Windows (mingw, 32-bit, 7-zip archive and installer combined)
https://github.com/vszakats/harbour-cor ... win.7z.exe

Usar Harbour 3.4 + Mingw 5.1 Top com 3 passos!

Enviado: 04 Jun 2016 21:19
por janio
Ha algum link para baixar o HARBOUR 3.4 ja COMPILADO?

O informado no inicio deste topico nao esta funcionando!

Janio

Usar Harbour 3.4 + Mingw 5.1 Top com 3 passos!

Enviado: 05 Jun 2016 01:24
por JoséQuintas
E esse do meu post que acabou de responder?
É exatamente o endereço dele no github.

Usar Harbour 3.4 + Mingw 5.1 Top com 3 passos!

Enviado: 05 Jun 2016 09:05
por janio
O do seu link não é a versão JÁ COMPILADA! Eh?

Janio

Usar Harbour 3.4 + Mingw 5.1 Top com 3 passos!

Enviado: 05 Jun 2016 10:20
por JoséQuintas
BINARIES significa o Harbour pronto para uso.

Mostrei como se chega nesse link, através da página de fontes.
Assim não importa se for alterado, lá vai estar sempre o link atualizado.

Usar Harbour 3.4 + Mingw 5.1 Top com 3 passos!

Enviado: 05 Jun 2016 11:11
por asimoes
Baixando o harbour compilado pelo harbour

Código: Selecionar todos

#include "hbthread.ch" 
#include "inkey.ch" 

FUNCTION MAIN
LOCAL cFileAttr, nFileSize, dCreateDate, nCreateTime, dChangeDate, nChangeTime 
   SetCursor(0)
   nSeconds :=Seconds()
   cUrl     :="https://github.com/vszakats/harbour-core/releases/download/v3.4.0dev/harbour-daily-win.7z.exe"
   cFile    :="harbour-daily-win.7z.exe"
   ferase(cFile)
   
   hb_ThreadStart( HB_BITOR( HB_THREAD_INHERIT_PUBLIC, HB_THREAD_INHERIT_PRIVATE, HB_THREAD_INHERIT_MEMVARS ), @Download(), cUrl, cFile)
   
   nFileSize:=0
   Do While nFileSize = 0
      @ 10,00 SAY "Baixando (&cFile.)"
      @ 11,00 SAY "Aguarde "+SecToTime(Seconds()-nSeconds)
      FileStats( cFile,  @cFileAttr  , @nFileSize  , ;
                         @dCreateDate, @nCreateTime, ;
                         @dChangeDate, @nChangeTime  )
   
   Enddo
   @ 12,00 SAY AllTrim(StrTran(Transform(nFileSize, "@ 999,999,999,999"), ",", "."))+" bytes"
   Inkey(0)

RETURN Nil

FUNCTION DOWNLOAD(cUrl, cFile)

   oOle := Win_OleCreateObject( "WinHttp.WinHttpRequest.5.1" )
   oOle:Open( 'GET', cUrl, .F. )
   oOle:Send()
   hb_MemoWrit(cFile, oOle:ResponseBody)
RETURN Nil

INIT FUNCTION AppSetup()
  
  ANNOUNCE hwg_ErrSys
  
  REQUEST HB_LANG_PT
  REQUEST HB_CODEPAGE_PT850
  REQUEST HB_CODEPAGE_PTISO
  HB_LANGSELECT("PT")
  HB_CDPSELECT( "PT850" ) 

  REQUEST DBFNTX
  
  REQUEST DBFCDX
  
  RddSetDefault("DBFCDX")
  
  SET TYPEAHEAD TO 0
  SET INTENSITY ON
  SET SCOREBOARD OFF
  SET DELETED ON
  SET SAFETY OFF
  SET DATE ANSI
  SET ESCAPE ON
  SET DATE FORMAT "DD/MM/YY"
  SET DELIMITERS TO
  SET EXCLUSIVE OFF
  SET WRAP ON
  SET EPOCH TO 1920
  SET OPTIMIZE ON
  SET AUTOPEN ON //OFF
  SET MESSAGE TO 24 CENTER
  
  Set( _SET_EVENTMASK, INKEY_ALL - INKEY_MOVE )
  
  hb_gtReload( "WVT" )
  
  SetMode(26, 80)

  SetColor("W+/B")
  
  CLS
 
  IniciaJanela()
 

RETURN Nil    

FUNCTION IniciaJanela()
 
   cTituloJanela:="Baixar Harbour"
   
   HB_gtInfo(HB_GTI_FONTNAME, "Lucida Console")
   HB_gtInfo(HB_GTI_WINTITLE, cTituloJanela)
   HB_gtInfo(HB_GTI_ICONFILE, "P:\GERAL\HARBOUR\HARB_WIN.ICO" )
   HB_gtInfo(HB_GTI_CLOSABLE, .F. )
   HB_gtInfo(HB_GTI_ISGRAPHIC, .T. )
   HB_gtInfo(HB_GTI_STDERRCON, .T. )
   HB_gtInfo(HB_GTI_COMPATBUFFER, .T. ) 
   HB_gtInfo(HB_GTI_SPEC, HB_GTS_WNDSTATE, HB_GTS_WS_MAXIMIZED )
   HB_gtInfo(HB_GTI_SPEC, HB_GTS_SHOWWINDOW, SW_NORMAL )
   HB_GtInfo( HB_GTI_MAXIMIZED, .T. )
    
RETURN Nil
 
FUNCTION HB_GTSYS()
   REQUEST HB_GT_WVT_DEFAULT
   REQUEST HB_GT_WVG
   REQUEST HB_GT_WGU
   REQUEST HB_GT_WVT
RETURN Nil  


Usar Harbour 3.4 + Mingw 5.1 Top com 3 passos!

Enviado: 05 Jun 2016 12:02
por janio
Valeu aSimoes,

Era exatamente o que eu estava precisando!
:{

Janio

Usar Harbour 3.4 + Mingw 5.1 Top com 3 passos!

Enviado: 05 Jun 2016 12:39
por asimoes
Uma atualização da função download

Código: Selecionar todos

FUNCTION DOWNLOAD(cUrl, cFile)
LOCAL oOle
   oOle := Win_OleCreateObject( "WinHttp.WinHttpRequest.5.1" )
   oOle:SetTimeouts(0, 60000, 30000, 120000)
   oOle:Open( 'GET', cUrl, .F. )
   oOle:Send()
   oOle:WaitForResponse(500)
   hb_MemoWrit(cFile, oOle:ResponseBody)
RETURN Nil

Usar Harbour 3.4 + Mingw 5.1 Top com 3 passos!

Enviado: 05 Jun 2016 13:21
por asimoes
Se houver problema para baixar em uma rede corporativa, que é o meu caso, uso o setproxy

Código: Selecionar todos


hb_ThreadStart( HB_BITOR( HB_THREAD_INHERIT_PUBLIC, HB_THREAD_INHERIT_PRIVATE, HB_THREAD_INHERIT_MEMVARS ), @Download(), cUrl, cFile, "proxy:8080")
FUNCTION DOWNLOAD(cUrl, cFile, cProxy)
LOCAL oOle
   hb_Default(@cProxy, "")
   oOle := Win_OleCreateObject( "WinHttp.WinHttpRequest.5.1" )
   oOle:SetTimeouts(0, 60000, 30000, 120000)
   If !Empty(cProxy)
      oOle:SetProxy(2, cProxy) 
   Endif
   oOle:Open( 'GET', cUrl, .F. )
   oOle:Send()
   oOle:WaitForResponse(-1)
   hb_MemoWrit(cFile, oOle:ResponseBody)
RETURN Nil

Usar Harbour 3.4 + Mingw 5.1 Top com 3 passos!

Enviado: 07 Jun 2016 20:08
por asimoes
Uma nova versão com controle do término com hb_ThreadWait

Código: Selecionar todos

FUNCTION MAIN
LOCAL cFileAttr, nFileSize, dCreateDate, nCreateTime, dChangeDate, nChangeTime, lExit, nSeconds
   SetCursor(0)
   lExit    :=.F.
   cUrl     :="https://github.com/vszakats/harbour-core/releases/download/v3.4.0dev/harbour-daily-win.7z.exe"
   cFile    :="harbour-daily-win.7z.exe"
   nSeconds :=Seconds()
   ferase(cFile)
   nThreadId:=hb_ThreadStart( HB_BITOR( HB_THREAD_INHERIT_PUBLIC, HB_THREAD_INHERIT_PRIVATE, HB_THREAD_INHERIT_MEMVARS ), @Download(), cUrl, cFile)
   Do While !lExit
      if hb_ThreadWait( nThreadId, 0.1, .T. ) == 1 
         lExit:=.T.
      Endif
      @ 10,00 say SecToTime(Seconds()-nSeconds)  
      SysWait(1)
   Enddo   
   FileStats( cFile,     @cFileAttr  , @nFileSize  , ;
                         @dCreateDate, @nCreateTime, ;
                         @dChangeDate, @nChangeTime  )   
   @ 12,00 SAY AllTrim(StrTran(Transform(nFileSize, "@ 999,999,999,999"), ",", "."))+" bytes"
   Inkey(0)                         
RETURN Nil

FUNCTION SysWait(nWait)
LOCAL iTime:=Seconds()
   hb_Default(@nWait, 1)
   DO WHILE Seconds() - iTime < nWait
      hwg_DoEvents()
   ENDDO
RETURN Nil         

Usar Harbour 3.4 + Mingw 5.1 Top com 3 passos!

Enviado: 07 Jun 2016 22:39
por JoséQuintas
ASimões, essa rotina funciona no Harbour 3.2, ou a pessoa vai ter que baixar o 3.4 primeiro pra poder compilar e obter o 3.4? ... rs

Talvez seja melhor detalhar:

Abrir o link do Harbour 3.4

https://github.com/vszakats/harbour-core
harbour1.png
Desça um pouco a página até o índice, vai encontrar "HOW TO GET", que signfica "como obter:
harbour2.png
Clique nesse "how to get"
harbour3.png
Bom, não é o Harbour 3.0, então descer um pouquinho.
harbour4.png
Pronto, o link vai estar sempre aí.

Nota: preciso descobrir como se faz isso, de colocar o EXE no próprio GIT, sem controle de versão do EXE.

Usar Harbour 3.4 + Mingw 5.1 Top com 3 passos!

Enviado: 08 Jun 2016 07:30
por asimoes
Quintas,

Todos os exemplos que eu tenho postado aqui estou usando o harbour 3.4, porque tudo que acontece na 3.2 o Viktor incorpora na 3.4 ao contrário acredito que não, acho que com raríssimas ocasiões.

Este é um exemplo que pode ser usado para baixar qualquer arquivo, o ideal é o endereço seja estático.

Já testei com http://hmgextended.com/files/CONTRIB/hmg1605-mingw.exe para baixar a minigui extended, mas como eu disse é uma função de download em tese serve para baixar qualquer arquivo de um endereço válido.

Até um arquivo da página do PC-TOLEDO

cUrl :='https://pctoledo.org/forum/fileba ... d=0&page=1'
cFile:='xDevStudio-0.70.exe'

Quintas,

Pré-requisito é ter o habour instalado.

O usuário do harbour pode até em um primeiro momento baixar a versão compilada do guit e depois usar este exemplo para uso genérico

Usar Harbour 3.4 + Mingw 5.1 Top com 3 passos!

Enviado: 08 Jun 2016 07:37
por asimoes
Que mancada, faltou a função Download.

Código: Selecionar todos

#include "hbthread.ch" 
#include "inkey.ch" 

FUNCTION MAIN
MEMVAR cArq
LOCAL cFileAttr, nFileSize, dCreateDate, nCreateTime, dChangeDate, nChangeTime, lExit, nSeconds
PUBLIC cArq:=""
   SetCursor(0)
   lExit    :=.F.
   cUrl     :="https://github.com/vszakats/harbour-core/releases/download/v3.4.0dev/harbour-daily-win.7z.exe"
   cFile    :="harbour-daily-win.7z.exe"
   nSeconds :=Seconds()
   ferase(cFile)
   nThreadId:=hb_ThreadStart( HB_BITOR( HB_THREAD_INHERIT_PUBLIC, HB_THREAD_INHERIT_PRIVATE, HB_THREAD_INHERIT_MEMVARS ), @Download(), cUrl, cFile)
   Do While !lExit
      if hb_ThreadWait( nThreadId, 0.1, .T. ) == 1 
         lExit:=.T.
      Endif
      @ 10,00 say SecToTime(Seconds()-nSeconds)  
      @ 11,00 say cArq
      SysWait(1)
   Enddo   
   FileStats( cFile,     @cFileAttr  , @nFileSize  , ;
                         @dCreateDate, @nCreateTime, ;
                         @dChangeDate, @nChangeTime  )   
   @ 12,00 SAY AllTrim(StrTran(Transform(nFileSize, "@ 999,999,999,999"), ",", "."))+" bytes"
   Inkey(0)                         
RETURN Nil

FUNCTION SysWait(nWait)
LOCAL iTime:=Seconds()
   hb_Default(@nWait, 1)
   DO WHILE Seconds() - iTime < nWait
      hwg_DoEvents()
   ENDDO
RETURN Nil           

FUNCTION DOWNLOAD(cUrl, cFile, cProxy)
LOCAL oOle
#define HTTPREQUEST_PROXYSETTING_DEFAULT    0
#define HTTPREQUEST_PROXYSETTING_PRECONFIG  0
#define HTTPREQUEST_PROXYSETTING_DIRECT     1
#define HTTPREQUEST_PROXYSETTING_PROXY      2

   hb_Default(@cProxy, "")
   oOle := Win_OleCreateObject( "WinHttp.WinHttpRequest.5.1" )
   oOle:SetTimeouts(0, 60000, 30000, 120000)
   If !Empty(cProxy)
      oOle:SetProxy(HTTPREQUEST_PROXYSETTING_PROXY, cProxy) 
   Endif
   oOle:Open( 'GET', cUrl, .F. )
   oOle:Send()
   oOle:WaitForResponse(-1)
   cArq:="Baixado"
   hb_MemoWrit(cFile, oOle:ResponseBody)
RETURN Nil              

Usar Harbour 3.4 + Mingw 5.1 Top com 3 passos!

Enviado: 08 Jun 2016 11:02
por JoséQuintas
Só comentário:
Não vai atualizar o tempo na tela, mas:

Código: Selecionar todos

 Do While !lExit 
       if hb_ThreadWait( nThreadId, 0.1, .T. ) == 1 
          lExit:=.T. 
       Endif 
       @ 10,00 say SecToTime(Seconds()-nSeconds)  
       @ 11,00 say cArq 
       SysWait(1) 
    Enddo    
se for programa único, pode ser substituído por:

Código: Selecionar todos

hb_ThreadWaitForAll()

Usar Harbour 3.4 + Mingw 5.1 Top com 3 passos!

Enviado: 08 Jun 2016 12:17
por asimoes
Quintas,

Na verdade aquele loop é pro usuário saber que tá acontecendo alguma coisa, claro que pode usar hb_ThreadWaitForAll()

Com hb_ThreadWaitForAll() a janela fica assim:
Screen Shot 06-08-16 at 12.19 PM.PNG
Screen Shot 06-08-16 at 12.19 PM.PNG (4.33 KiB) Exibido 3901 vezes