Página 2 de 2
Enviado: 18 Fev 2008 12:05
por sygecom
Itamar, eu fiz um usando GAUGE com apenas os tamanhos dos arquivos que vai ser baixado, o quanto já foi baixado e porcentagem de quanto resta para baixar, mas confesso que apanhei para o Progress.... se poder posta a parte do Progress de como vc fez, para ver se me dah uma luz...Obrigado
Enviado: 20 Fev 2008 09:08
por Mário Isa
Itamar,
Vc tem algum modelo aí ?
Mário
Enviado: 20 Fev 2008 11:30
por sygecom
Mario se quiser, posso postar um exemplo de Download com HWGUI sem progress.
Enviado: 20 Fev 2008 14:14
por fladimir
Leonardo eu tenho interesse em dar uma olhada... e se possível um exemplo com Gauge...
Grato
meu e-mail eh:
fladimir_arroyo@yahoo.com.br
Enviado: 20 Fev 2008 18:35
por Itamar M. Lins Jr.
sygecom escreveu:Itamar, eu fiz um usando GAUGE com apenas os tamanhos dos arquivos que vai ser baixado, o quanto já foi baixado e porcentagem de quanto resta para baixar, mas confesso que apanhei para o Progress.... se poder posta a parte do Progress de como vc fez, para ver se me dah uma luz...Obrigado
Ola!
Segue exemplo...
Código: Selecionar todos
************
Function FTP
************
*
*
Local lRet := .f.
Local cServer := ServerWAN
Local cUser := "XXXXXX"
Local cPassword := "XXXXXX"
Local cDir := dDados
Local dAno := str(year(date()),4)
Local cMesItens := dDados+dAno+ '\' + substr(mes(date()),1,3)+'_'+dAno+'.dbf'
Local ArrayFile := { "estoque.dbf", "estoque.cdx", "forneced.dbf", "forneced.fpt", "forneced.cdx", ;
"grupos.dbf", "grupos.cdx", "receber.dbf", "receber.cdx", "caixa.dbf", "caixa.cdx", ;
"clientes.dbf", "clientes.fpt", "clientes.cdx", "moviment.dbf", "moviment.cdx", ;
"vendedor.dbf", "vendedor.cdx" }
Local curl:= "ftp://" + cUser + ":" + cPassword + "@" + cServer //+ cDir //+ "/" + cFile
AbreDb('empresa.dbf','em',.t.)
if empty(em->cgc)
MsgStop('Cadastre o CNPJ da Empresa')
FechaDb('em')
return .f.
endif
oUrl:= tUrl():new(cUrl)
oCred := tIPCredentials()
oFtp := TipClientFtp():NEW(oUrl,.t.)
oFTP : nConnTimeout := 20000
oFTP : bUsePasv := .T.
If AT("@",cUser) > 0
oFTP:oUrl:cServer := cServer
oFTP:oUrl:cUserId := cUser
oFTP:oUrl:cPassword := cPassword
EndIf
Private oBar,oDlg,oFont,nSize
PREPARE FONT oFont NAME "MS Sans Serif" WIDTH 0 HEIGHT -20
IF oFTP:OPen(cUrl) //Connect()
//MsgInfo("Sucesso na Conexão em " + oUrl:cServer + CRLF + oURL:cPATH + CRLF + curdir())
Aguarde()
if oFTP:CWD(em->cgc)
else
if oFTP:MKD(em->cgc)
if oFTP:CWD(em->cgc)
else
MsgStop('Erro na Mudança de Diretório')
oDlg:Close()
return .f.
endif
else
MsgStop('Erro Criando Diretório')
oDlg:Close()
return .f.
endif
endif
For n:=1 to 10
cFile := dDados + ArrayFile[n]
//oFTP:exGauge := {| done, size, oConnection | dothing( done, size, oConnection) }
oFTP:exGauge := { | done, size| ShowGauge(done, size, ArrayFile[n] ) }
If oFTP:UpLoadFile(cFile)
else
MsgInfo( 'Arquivo Não Enviado.' )
endif
Next
if oFTP:CWD(dAno)
else
if oFTP:MKD(dAno)
if oFTP:CWD(dAno)
else
MsgStop( 'Erro Mudando de Diretório. Ano.' )
oDlg:Close()
oFTP:Close()
return .f.
endif
else
MsgStop('Erro Criando Diretório. Ano.')
oDlg:Close()
oFTP:Close()
return .f.
endif
endif
If file(cMesItens)
oFTP:exGauge := { | done, size| ShowGauge(done, size, cMesItens ) }
If oFTP:UpLoadFile(cMesItens)
else
MsgInfo('Arquivo Não Enviado')
endif
cMesItens := StrTran(cMesItens,'_','S')
oFTP:exGauge := { | done, size| ShowGauge(done, size, cMesItens ) }
If oFTP:UpLoadFile(cMesItens)
else
MsgInfo('Arquivo Não Enviado')
endif
cMesItens := StrTran(cMesItens,'.dbf','.cdx')
oFTP:exGauge := { | done, size| ShowGauge(done, size, cMesItens ) }
If oFTP:UpLoadFile(cMesItens)
else
MsgInfo('Arquivo Não Enviado')
endif
EndIf
oFTP:CLOSE()
oDlg:Close()
Else
cStr := "Não Foi Possível Conectar Com o Servidor FTP " + oURL:cServer
IF oFTP:SocketCon == NIL
cStr += CRLF + "Conexão Não Inicializada"
ELSEIF InetErrorCode( oFTP:SocketCon ) == 0
cStr += CRLF + "Resposta do Servidor:" + " " + oFTP:cReply
ELSE
cStr += CRLF + "Erro na Conexão:" + " " + InetErrorDesc( oFTP:SocketCon )
ENDIF
MsgInfo(cStr)
ENDIF
return nil
PROCEDURE ShowGauge( nSent, nSize, cArq )
IF nSent > 0
//@6,14 SAY Replicate( Chr(219), 10000 * nSent/nSize )
eval( {||oBar:Set(,(nSent * 100/nSize)),.t.} )
rodape(oDlg,1,'Parte: '+transf(nSent,'999,999,999,999') )
else
rodape(oDlg,2,'Total: '+transf(nSize,'999,999,999,999') )
rodape(oDlg,3,'Arquivo: '+cArq )
ENDIF
RETURN
*****************
Procedure Aguarde
*****************
*
*
INIT DIALOG oDlg TITLE "Atenção !" AT 45,30 SIZE 600,210 NOEXIT STYLE DS_CENTER + WS_VISIBLE
@ 50,20 say "Aguarde Enviando Informações..." size 300,40 Font oFont
@ 50,60 PROGRESSBAR oBar OF oDlg SIZE 510,50 BARWIDTH 10000 //QUANTITY 1
Add status to oDlg parts 200,200,200
oDlg:Activate(.t.)
Saudações
Itamar M. Lins Jr.
Enviado: 20 Fev 2008 19:22
por sygecom
Itamar vlw... acabei de postar um exemplo tmb. na sessão HWGUI:
https://pctoledo.org/forum/viewtopic.php?t=7587
Enviado: 20 Fev 2008 19:43
por sygecom
Itamar pode postar a função RODAPE()
Enviado: 21 Fev 2008 07:39
por Itamar M. Lins Jr.
sygecom escreveu:Itamar pode postar a função RODAPE()
`
Saudações
Itamar M. Lins Jr.
Código: Selecionar todos
*********************************
Function rodape(nDlg,nLoc,ctexto)
*********************************
*
*
if valtype(nDlg) = 'U'
nDlg := HWindow:GetMain()
endif
if Valtype(nLoc) = 'U'
nLoc := 2
endif
if ValType(cTexto) = 'U'
cTexto := ""
endif
WriteStatus( nDlg,nLoc,ctexto)
return .t.
Enviado: 22 Fev 2008 13:07
por sygecom
Itamar, Show de bola, vlw....
Enviado: 25 Mar 2008 14:57
por marcos.gurupi
Caro Itamar, a funcao FTP estah funcionando q eh uma beleza agradeco a vc e a o Leonardo, a unica ressalva eh com o ShowGauge(done, size, cMesItens ) q n atualiza o progressbar do aguarde e nem o toolbar. Obrigado
Marcos Roberto.
Enviado: 26 Mar 2008 13:16
por sygecom
mas consegiu saber pq não atualiza? se quiser posso te passar do jeito que estou fazendo...
Enviado: 26 Mar 2008 14:15
por marcos.gurupi
N. Eu n descobri pq n estah atualizando eu testei o seu ShowGauge() e o do Itamar nenhum dos dois estah funcionando aqui.
E vc ainda pergunta c eu quero. Manda ai garotinho.
Marcos Roberto.
Enviado: 26 Mar 2008 14:22
por sygecom
marcos.gurupi escreveu:N. Eu n descobri pq n estah atualizando eu testei o seu ShowGauge() e o do Itamar nenhum dos dois estah funcionando aqui.
Marcos Roberto.
Marcos,
Recentemente passei por um problema assim que em uma hospedagem LINUX o "fileSize(ftpfile)" não pega o tamanho do arquivo, e automaticamente não passa o total para o SHOWGAUGE() então verefique se o seu problema é esse, veja se esta pegando o tamanho total do arquivo a ser baixado. Se não tiver tente com esse abaixo:
Código: Selecionar todos
*************************************
Function Tamanho_File(clista,ftpfile)
*************************************
GERAFILE() // nome temporario
vARQ:={}
aadd( vARQ, {"SIZE" ,"N",11,0} )
aadd( vARQ, {"CFILE","C",50,0} )
DBcreate(cFILE, vARQ,"RMDBFCDX")
USE (cFILE) ALIAS TMP SHARED
SELE TMP
FOR i=1 TO MLCOUNT(Clista)-1
clinha=MEMOLINE(Clista,,i)
DBAPPEND()
FIELD->SIZE := VAL(SUBST(clinha,34,10))
FIELD->cFILE := SUBST(clinha,56)
NEXT
vTamanho=0
LOCATE FOR UPPER(ALLTRIM(cfile))=UPPER(ALLTRIM(ftpfile))
IF FOUND()
vTamanho=SIZE
ENDIF
SELE TMP
USE
RETURN vTamanho