Clipper On Line • Ver Tópico - Barra de Progresso com TipClientHttp()

Barra de Progresso com TipClientHttp()

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

 

Barra de Progresso com TipClientHttp()

Mensagempor gilsonpaulo » 24 Jul 2012 21:08

Boa noite, consegui com pesquisa aqui no forum utilizar com sucesso a TipClientHttp().

Function ver_update

   local oHttp, oExe, oEmpresa, oExecutavel, oUrl, oTamanho, oProgress
   
   use mat shared alias mat
   go top
   
   oEmpresa:= alltrim(mat->update)
   oExecutavel:= alltrim(mat->executavel)

   close mat
   
   oUrl := "http://www.gsinformatica.inf.br/"+oEmpresa+"/"+oExecutavel
   
   oHttp:= TipClientHttp():New( "http://www.gsinformatica.inf.br/"+oEmpresa+"/"+oExecutavel )
   
   oHttp:open()

   oExe := oHttp:readAll()
   
   oHttp:close()
   
   MemoWrit(oExecutavel,oExe)
   
   EXECUTE FILE oExecutavel
   Main.release
   
Return


Agora quero colocar uma barra de progresso neste download, mas não faço a minima ideia de como implementar.

Desde ja agradeço qualquer ajuda.
gilsonpaulo
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 135
Data de registro: 02 Fev 2008 10:30
Cidade/Estado: Quatro Barras
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Barra de Progresso com TipClientHttp()

Mensagempor Abel » 25 Jul 2012 23:43

Ola,

nao consegui fazer usando a tip,
fiz pela wapi do maligno, conforme vai baixando vou verificando o tamanho do executavel baixado, e vou controlando a barra ...
da uma pesquisada na wapi tem muita coisa interessante, vc acha aqui no forum.
eu nao sei como colocar links aqui rs rs

Abel
Abel
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 310
Data de registro: 14 Mar 2012 13:16
Cidade/Estado: sao paulo / sp
Curtiu: 1 vez
Mens.Curtidas: 2 vezes

Barra de Progresso com TipClientHttp()

Mensagempor sygecom » 31 Jul 2012 07:46

Procure por:
:exGauge

Exemplo:
function main()
cURL:='www.meusite.com.br/arquivo.exe'
nTAMANHO:= 121222  // tamanho do arquivo no site
oConn := TipClientHttp():New(TURL():New(cURL))
oConn:nConnTimeout := 10000
oConn:exGauge := { | done, size| ShowGauge(done, size, nTAMANHO, ftpfile, oBar, oSAY ) }
return nil

****************************************************************
PROCEDURE SHOWGAUGE( nSent, nSize, wTotal, ftpfile, oBar, oSAY )
****************************************************************
IF nSent > 0
   hwg_processmessage() // uso com Hwgui
   eval( {||oBar:Set(,(nSent/wTotal)*100),.t.} ) // uso com Hwgui

   oSAY:SetText("Arquivo...: " +ftpfile+" "+ STR(nSent/1000000)+" Mb de: " + str(wTotal/1000000)+ " Mb "+str((nSent/wTotal)*100,4) +" %")  // uso com Hwgui
   oSAY:Refresh()  // uso com Hwgui
ENDIF
RETURN

Se ficar alguma duvida post aqui.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 7006
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 130 vezes

Barra de Progresso com TipClientHttp()

Mensagempor Abel » 17 Dez 2012 23:12

Ola, Leornado.

Como no post acima, eu tinha feito minha rotina de download pelo wapi do maligno,
mas agora q atualizei os clientes, to tento um problema.

Muitos antivirus bloqueiam o EXE nao conseguindo fazer o download.

Vi a rotina pelo HTTP, e deu certo, mas nao consegui gerar a barra de progresso como no exemplo acima. Eu utilizo harbour 3.1 nigthy.

nao utilizo hwgui, sera que é por isso q nao deu certo.

ficou assim:

PROCEDURE SHOWGAUGE( nSent, nSize, wTotal, ftpfile, oBar, oSAY )
rN_T=1
//IF nSent > 0
   @ 0,rN_T++ SAY 'A' //hwg_processmessage() // uso com Hwgui
   eval( {||oBar:Set(,(nSent/wTotal)*100),.t.} ) // uso com Hwgui

   oSAY:SetText("Arquivo...: " +ftpfile+" "+ STR(nSent/1000000)+" Mb de: " + str(wTotal/1000000)+ " Mb "+str((nSent/wTotal)*100,4) +" %")  // uso com Hwgui
   oSAY:Refresh()  // uso com Hwgui
//ENDIF
RETURN
Abel
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 310
Data de registro: 14 Mar 2012 13:16
Cidade/Estado: sao paulo / sp
Curtiu: 1 vez
Mens.Curtidas: 2 vezes

Barra de Progresso com TipClientHttp()

Mensagempor Abel » 18 Dez 2012 23:49

ola, pessoal,
consegui fazer funcionar a showgauge para exibir uma barra de progresso durante o download utilizando tipclienthttp.
   oHttp:= TipClientHttp():New(TURL():New(rA_URL)) 
   oHttp:nConnTimeout := 20000
   //
   oHttp:Open()
   oHttp:exGauge := { |done, size| ShowGauge(done, size, ntamanho) }
   oHttp:ReadToFile( rA_NOMEEXE ) // esta linha resolveu tudo
   oHttp:close()


Minha duvida é a seguinte:
- usando HTTP: pode acontecer de algum antivirus barrar o download ?

- quando eu usava a wapi.exe do maligno alguns antivirus removiam o EXE, ou ate mesmo abriam um popup indicando a wapi.exe como arquivo suspeito, e agora sera que tem algum perigo do antivirus remover o EXE do meu programa, ja que agora faço direto do sistema ?

Abraços,
ABEL
Abel
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 310
Data de registro: 14 Mar 2012 13:16
Cidade/Estado: sao paulo / sp
Curtiu: 1 vez
Mens.Curtidas: 2 vezes

Barra de Progresso com TipClientHttp()

Mensagempor sygecom » 26 Dez 2012 19:10

Olá Abel,
Abel escreveu:Minha duvida é a seguinte:
- usando HTTP: pode acontecer de algum antivirus barrar o download ?

Pode barrar sim, e se usar muitas vez o HTTP abrindo e fechando em pouco tempo algumas hospedagem bloqueiam o IP que está tentando fazer isso por alguns minutos, um exemplo é a KingHost que faz esse procedimento, digo isso por que já passei por algo assim, agora zipei em pacotes em vez de baixar arquivo por arquivo.

- quando eu usava a wapi.exe do maligno alguns antivirus removiam o EXE, ou ate mesmo abriam um popup indicando a wapi.exe como arquivo suspeito, e agora sera que tem algum perigo do antivirus remover o EXE do meu programa, ja que agora faço direto do sistema ?

Por isso nunca passei, quando aconteceu de remover meu EXE foi por algum virus se instalar dentro da pasta do meu sistema, ai o anti-virus foi lá e exclui todos os EXE da pasta onde estava o virus.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 7006
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 130 vezes

Barra de Progresso com TipClientHttp()

Mensagempor Abel » 27 Dez 2012 10:51

sygecom,

agora q estou aprendendo a utilizar melhor alguns recursos do harbour,
acho q o melhor é baixar por HTTP do que pelo wapi.exe, nao é ?
pois HTTP usa a porta 8080 é mais facil de passar pelo firewall e pelos antivirus.

eu tb estou zipando os arquivos e apos baixar, descompacto.

abracos e um otimo ano novo,
ABEL
Abel
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 310
Data de registro: 14 Mar 2012 13:16
Cidade/Estado: sao paulo / sp
Curtiu: 1 vez
Mens.Curtidas: 2 vezes

Barra de Progresso com TipClientHttp()

Mensagempor sygecom » 27 Dez 2012 11:57

Com certeza usando pela TIP.LIB fica melhor, mais profissional e pega os retornos caso de algum problema...

Parte do meu código:
   TRY
     oConn := TipClientHttp():New(TURL():New(cURL))
     oConn:nConnTimeout := 10000
     oConn:exGauge := { | done, size| ShowGauge(done, size, nTAMANHO, ftpfile, oBar, oSAY ) }

     IF oConn:Open(cURL)
        oConn:ReadToFile(fdestino,,nFileSize)
        oConn:Close()
     ENDIF
     lRet:=.T.
   CATCH
     lRet:=.F.
   END

//showmsg(lRet)

   oSAY:SetText('Aguarde, Conferindo arquivo baixado...')
   oSAY:Refresh()

   IF lRet
      IF FILE(fdestino)
         cCONFERE:=MEMOREAD(fdestino)
         IF AT('<html>',cCONFERE)>0 .AND. AT('</html>',cCONFERE)>0
            IF AT('Erro 403',cCONFERE)>0 .OR.;  // acesso negado
               AT('Erro 404',cCONFERE)>0 .OR.;  // pagina não encontrada
               AT('Erro 500',cCONFERE)>0 .OR.;  // Erro Interno de Servidor
               AT('Página Não Encontrada',cCONFERE)>0 // pagina não encontrada

               FERASE(fdestino) // EXCLUI POR BAIXOU COM PROBLEMA
               lRet:=.F.
            ENDIF
         ENDIF
      ELSE
         lRet:=.F.
      ENDIF
   ENDIF
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 7006
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 130 vezes

Barra de Progresso com TipClientHttp()

Mensagempor Abel » 28 Dez 2012 10:04

tenho uma duvida antiga, que inclusive vendo seu codigo e melhorando o meu
voltou a dar. Pq os comandos TRY, CATCH, END nao compilam no meu harbour.

da erro:
" syntax error at 'end' "

se eu retirar o END da:
ERROR e0020 incomplete statement or unbalanced delimiters

utilizo o harbour 3.1 nigthy

Abracos,
ABEL
Abel
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 310
Data de registro: 14 Mar 2012 13:16
Cidade/Estado: sao paulo / sp
Curtiu: 1 vez
Mens.Curtidas: 2 vezes

Barra de Progresso com TipClientHttp()

Mensagempor sygecom » 28 Dez 2012 11:02

Olá Abel,

Esses comandos são do xHarbour e o Harbour implantou isso em: hbcompat.ch, então se você incluir no cabeçalho do seu .PRG a linha:
#include "hbcompat.ch"
Deve resolver com a linha acima, apenas certifique se o .CH está em suas pastas de INCLUDE, por que originalmente acho que está na pasta \HARBOUR\CONTRIB\XHB

Esse TRY, CATCH é equivalente que tinhamos no CLIPPER:
BEGIN SEQUENCE
<statements>...
IF lBreakCond
BREAK
ENDIF
RECOVER
<recovery statements>...
END
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 7006
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 130 vezes

Barra de Progresso com TipClientHttp()

Mensagempor Abel » 05 Jan 2013 12:51

puxa legal,
nunca usei begin sequence mas pelo visto é muito interessante,
coloquei o #include "hb_compat.ch" e compilou normalmente,
minha duvida foi a seguinte:

tinha um outro prg que tb adaptei para usar try catch e tambem tive que colocar o include neste prg pq dava erro. Existe alguma forma de coloca-lo apenas uma vez e utilizar o comando try em qualquer prg do projeto ?

Abracos e desde ja agradeço toda a atencao,
ABEL
Abel
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 310
Data de registro: 14 Mar 2012 13:16
Cidade/Estado: sao paulo / sp
Curtiu: 1 vez
Mens.Curtidas: 2 vezes

Barra de Progresso com TipClientHttp()

Mensagempor Abel » 05 Jan 2013 14:48

sygecom,
fazendo alguns testes com os novos comandos que estou aprendendo a usar
nao estou conseguindo fazer os devidos testes, veja:

BEGIN SEQUENCE
oUrl = TUrl():New( cUrl ) //

// nenhuma url q eu coloque faz com que ele entre no empty
// ate mesmo url que nao existe

IF EMPTY( oUrl )
ALERT2('PROBLEMA 1')
BREAK
ENDIF
oCli = TIpClientHttp():New( oUrl )
//
// aqui tambem ele nunca entre no IF abaixo
//
IF EMPTY( oCli )
ALERT2('PROBLEMA 2')
BREAK
ENDIF
oCli:nConnTimeout = 20000

IF !oCli:Open( oUrl ) // ate mesmo com URL inexistente nao exibe a msg
ALERT2('PROBLEMA 3')
BREAK
ENDIF

cRes := oCli:Read()
oCli:Close()
END SEQUENCE


porque sera que ele nunca exibe as mensagens de problema uma vez que a url nem existe ?

Agradeço mais uma vez,
ABEL
Abel
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 310
Data de registro: 14 Mar 2012 13:16
Cidade/Estado: sao paulo / sp
Curtiu: 1 vez
Mens.Curtidas: 2 vezes

Barra de Progresso com TipClientHttp()

Mensagempor HASA » 05 Jan 2013 19:21

:-O
Boa noite, desculpe cair de paraquedas no post, mas... os exemplos acima são para MINIGUI ou Hwgui ? Me parecem ser para HWGUI, se for mesmo tem algum exemplo para Minigui ?
:xau
HASA
Avatar de usuário

HASA
Colaborador

Colaborador
 
Mensagens: 1082
Data de registro: 01 Set 2003 19:50
Cidade/Estado: São Paulo
Curtiu: 1 vez
Mens.Curtidas: 51 vezes

Barra de Progresso com TipClientHttp()

Mensagempor HASA » 11 Jan 2013 11:02

:(
Olá pessoal, ninguem tem um pequeno sample ?
:-O
Hasa
Avatar de usuário

HASA
Colaborador

Colaborador
 
Mensagens: 1082
Data de registro: 01 Set 2003 19:50
Cidade/Estado: São Paulo
Curtiu: 1 vez
Mens.Curtidas: 51 vezes

Barra de Progresso com TipClientHttp()

Mensagempor Toledo » 13 Jan 2013 08:40

Veja este pequeno exemplo:

#include "hmg.ch"

Function Main

   DEFINE WINDOW Form_1 ;
          AT 0,0 ;
          WIDTH 530 HEIGHT 154 ;
          TITLE "Exemplo de Barra de Progresso com TipClientHttp" ;
          MAIN

          @ 10,10 BUTTON Button_1 ;
                  CAPTION "Copiar Arquivo" ;
                  ACTION {|| Copiar_Arquivo()} ;
                  WIDTH 100 ;
                  HEIGHT 28

          @ 70,10 PROGRESSBAR Progress_1 ;
                  RANGE 0 , 100 ;
                  WIDTH 500 ;
                  HEIGHT 30

   END WINDOW

   CENTER WINDOW Form_1

   ACTIVATE WINDOW Form_1

Return

Function Copiar_Arquivo()
cUrl:='http://www.pctoledo.com.br/temp/clipper_v52e.zip'
oHttp := TipClientHttp():New(cUrl)
oHttp:nConnTimeout := 20000
nTamanhoArquivo:=2268297
oHttp:exGauge := { | nSent, nTotal | HttpProgress(nSent, nTotal, nTamanhoArquivo) }
IF oHttp:Open(cUrl)
   cArq:=oHttp:oUrl:cFile
   oHttp:ReadToFile(cArq)
   oHttp:Close()
   MsgInfo("Arquivo copiado com sucesso!")
ENDIF
Return Nil

Function HttpProgress(nSent, nTotal, nTamanhoArquivo)
if nSent>0
Form_1.Progress_1.Value:=((nSent/nTamanhoArquivo)*100)
endif
return .t.


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
Avatar de usuário

Toledo
Administrador

Administrador
 
Mensagens: 3038
Data de registro: 22 Jul 2003 18:39
Cidade/Estado: Araçatuba - SP
Curtiu: 263 vezes
Mens.Curtidas: 258 vezes

Próximo



Retornar para MiniGui

Quem está online

Usuários vendo este fórum: Google [Bot] e 8 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