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:
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
Desça um pouco a página até o índice, vai encontrar "HOW TO GET", que signfica "como obter:
Clique nesse "how to get"
Bom, não é o Harbour 3.0, então descer um pouquinho.
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:
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 (4.33 KiB) Exibido 3901 vezes