sambomb Posted October 14, 2008 Report Share Posted October 14, 2008 Olá, gostaria de saber se alguém sabe um método para listar o conteúdo de um arquivo zip, preciso saber se um arquivo já existe dentro do ZIP para requisitar uma confirmação para sobreescrever a cada arquivo que é adicionado no zip. Utilizo: xHarbour 1.1.0 + FwXh 8.02 samirabreu@hotmail.com Editado por - sambomb on 15/10/2008 17:06:07 Editado por - sambomb on 21/10/2008 14:18:13 Editado por - sambomb on 21/10/2008 15:35:06 Editado por - sambomb on 22/10/2008 11:37:15 Editado por - sambomb on 23/10/2008 17:44:06 Editado por - sambomb on 30/10/2008 09:54:46 Quote Link to comment Share on other sites More sharing options...
sambomb Posted October 14, 2008 Author Report Share Posted October 14, 2008 Olá, gostaria de saber se alguém sabe um método para listar o conteúdo de um arquivo zip, preciso saber se um arquivo já existe dentro do ZIP para requisitar uma confirmação para sobreescrever a cada arquivo que é adicionado no zip. Utilizo: xHarbour 1.1.0 + FwXh 8.02 samirabreu@hotmail.com Editado por - sambomb on 15/10/2008 17:06:07 Editado por - sambomb on 21/10/2008 14:18:13 Editado por - sambomb on 21/10/2008 15:35:06 Editado por - sambomb on 22/10/2008 11:37:15 Editado por - sambomb on 23/10/2008 17:44:06 Editado por - sambomb on 30/10/2008 09:54:46 Quote Link to comment Share on other sites More sharing options...
Guest n/a Posted October 14, 2008 Report Share Posted October 14, 2008 Ola amigo vc pode usara isto IsZip( ) --> lYesNo ver se eh um zip correto GetNextInZip() --> aFileInfo com isso da pra retirar informacao do seu arquivo.zip retorna a um array de 9 string aFileInfo[ 1 ] // The returning code // #define ZIP_OK 0 // #define ZIP_FILEERROR -1 // #define ZIP_INTERNALERROR -2 // #define ZIP_NOMOREITEMS 1 aFileInfo[ 2 ] // the filename aFileInfo[ 3 ] // Date aFileInfo[ 4 ] // Time aFileInfo[ 5 ] // File size aFileInfo[ 6 ] // Compressed size aFileInfo[ 7 ] // offset insize the ZIP file aFileInfo[ 8 ] // Pack Method aFileInfo[ 9 ] // File attributes com o GetFirstInZip( ) como o nome ja fiz 'first' retorna ao nome d primeiro arquivo do zip dados obtido no manual do fwh que fica no local x:\fwh\manul arquivo referente testzip.prg que fica na pasta samples do seu fwh MSN --[ lailton.webmaster@hotmail.com ]-- FiveWin 8.5 | Xharbour 1.1.0 | BCC55 | C Pelles | Designer.LIB Quote Link to comment Share on other sites More sharing options...
Guest n/a Posted October 14, 2008 Report Share Posted October 14, 2008 eh algo assim.. pesquisa ae local nType := ZipType( nZipInfo ) local nSize local cFileName nTotalFiles := 0 nActualFile := 0 nActualSize := 0 do while .t. nActualFile ++ if nActualFile <= nTotalFiles cFileName := aFiles[ nActualFile ][ 1 ] nFileSize := aFiles[ nActualFile ][ 2 ] nActualSize := 0 oName:bGet := { || cFileName } oMtr:Set( nActualSize ) oMtr:nTotal := 100 endif enddo MSN --[ lailton.webmaster@hotmail.com ]-- FiveWin 8.5 | Xharbour 1.1.0 | BCC55 | C Pelles | Designer.LIB Quote Link to comment Share on other sites More sharing options...
sambomb Posted October 14, 2008 Author Report Share Posted October 14, 2008 Muito obrigado, deve solucionar meu problema. Quando eu puder testar confirmo aqui. samirabreu@hotmail.com Quote Link to comment Share on other sites More sharing options...
sambomb Posted October 14, 2008 Author Report Share Posted October 14, 2008 coloquei de uma forma diferente... (...) for i := 1 to Len(paFile) //-- Obtem as informações de dentro do ZIP if i = 1 aResultado := GetFirstInZip(::cPath+::cNome) else aResultado := GetNextInZip(::cPath+::cNome) end //-- Verifica se está Ok if aResultado[1] == 0 //-- Procura por arquivos iguais if Ascan(paFile,aResultado[2]) //-- Se encontrar arquivo igual testa se o parâmetro foi indicado if lAvisaDuplicado //-- Se o parâmetro foi indicado pergunta se deseja sobreescrever if SN("Arquivo já encontrado, sobreescreve") lSobre := .T. else lSobre := .F. end else lSobre := .T. end//if lAvisaDuplicado end//if Ascan(paFile,aResultado[2]) end//if aResultado[1] == 0 Result := HB_ZIPFILE(::pcPath, paFileName,0,,lSobre) end (...) samirabreu@hotmail.com Editado por - sambomb on 14/10/2008 11:44:51 Quote Link to comment Share on other sites More sharing options...
Guest n/a Posted October 14, 2008 Report Share Posted October 14, 2008 Isso ae MSN --[ lailton.webmaster@hotmail.com ]-- FiveWin 8.5 | Xharbour 1.1.0 | BCC55 | C Pelles | Designer.LIB Quote Link to comment Share on other sites More sharing options...
sambomb Posted October 14, 2008 Author Report Share Posted October 14, 2008 Só pra constar, o código que eu postei está errado, pois é feito enquanto adiciona um arquivo e do jeito que está ele não roda todos arquivos do ZIP e sim todos a serem adicionados o correto se encontra abaixo: for i := 1 to Len(paFile) //-- Obtem as informações de dentro do ZIP For j = 1 to HB_GETUNZIPFILE(::cPath+::cNome) //-- Verifica se é o 1º arquivo do ZIP if j = 1 aResultado := GetFirstInZip(::cPath+::cNome) else aResultado := GetNextInZip(::cPath+::cNome) end //-- Verifica se está Ok if aResultado[1] == 0 //-- Procura por arquivos iguais if Ascan(paFile,aResultado[2]) //-- Se encontrar arquivo igual testa se o parâmetro foi indicado if lAvisa //-- Se o parâmetro foi indicado pergunta se deseja sobreescrever if SN("Arquivo "+paFileName+" já encontrado, sobreescreve") lSobre := .T. else lSobre := .F. end Exit //-- Se achou o arquivo sai do loop else lSobre := .T. end//if lAvisa end//if Ascan(paFile,aResultado[2]) end//if aResultado[1] == 0 end//For j = 1 to HB_GETUNZIPFILE(::cPath+::cNome) Result := HB_ZIPFILE(::pcNome, paFileName,0,,lSobre) if Result = .F. Msg("Erro ao copiar o arquivo "+paFileName) Return Result end end samirabreu@hotmail.com xHarbour 1.1.0 + FwXh 8.02 Quote Link to comment Share on other sites More sharing options...
Guest n/a Posted October 14, 2008 Report Share Posted October 14, 2008 citação:Só pra constar, o código que eu postei está errado, pois é feito enquanto adiciona um arquivo e do jeito que está ele não roda todos arquivos do ZIP e sim todos a serem adicionados o correto se encontra abaixo: for i := 1 to Len(paFile) //-- Obtem as informações de dentro do ZIP For j = 1 to HB_GETUNZIPFILE(::cPath+::cNome) //-- Verifica se é o 1º arquivo do ZIP if j = 1 aResultado := GetFirstInZip(::cPath+::cNome) else aResultado := GetNextInZip(::cPath+::cNome) end //-- Verifica se está Ok if aResultado[1] == 0 //-- Procura por arquivos iguais if Ascan(paFile,aResultado[2]) //-- Se encontrar arquivo igual testa se o parâmetro foi indicado if lAvisa //-- Se o parâmetro foi indicado pergunta se deseja sobreescrever if SN("Arquivo "+paFileName+" já encontrado, sobreescreve") lSobre := .T. else lSobre := .F. end Exit //-- Se achou o arquivo sai do loop else lSobre := .T. end//if lAvisa end//if Ascan(paFile,aResultado[2]) end//if aResultado[1] == 0 end//For j = 1 to HB_GETUNZIPFILE(::cPath+::cNome) Result := HB_ZIPFILE(::pcNome, paFileName,0,,lSobre) if Result = .F. Msg("Erro ao copiar o arquivo "+paFileName) Return Result end end samirabreu@hotmail.com xHarbour 1.1.0 + FwXh 8.02 id=quote>id=quote>isso ae garoto fico baum MSN --[ lailton.webmaster@hotmail.com ]-- FiveWin 8.5 | Xharbour 1.1.0 | BCC55 | C Pelles | Designer.LIB Quote Link to comment Share on other sites More sharing options...
sambomb Posted October 15, 2008 Author Report Share Posted October 15, 2008 Agora to com problemas na compilação, da unsolved external nas seguintes funções: IsZip HB_GETUNZIPFILE (UnZipFile - editado) GetFirstInZip GetNextInZip OBS.: Já adicionei a Lib hbzip.lib samirabreu@hotmail.com xHarbour 1.1.0 + FwXh 8.02 Editado por - sambomb on 15/10/2008 14:38:14 Quote Link to comment Share on other sites More sharing options...
vagner Posted October 15, 2008 Report Share Posted October 15, 2008 Olá, Inclua a ZLib.Lib, para xHarbour 1.1.0 Vagner Wirts VI Encontro está chegando , não perca Quote Link to comment Share on other sites More sharing options...
sambomb Posted October 15, 2008 Author Report Share Posted October 15, 2008 Não tenho essa lib aqui não, tem como postar no fórum? samirabreu@hotmail.com xHarbour 1.1.0 + FwXh 8.02 Quote Link to comment Share on other sites More sharing options...
sambomb Posted October 15, 2008 Author Report Share Posted October 15, 2008 Alguma alma caridosa? samirabreu@hotmail.com xHarbour 1.1.0 + FwXh 8.02 Quote Link to comment Share on other sites More sharing options...
vagner Posted October 15, 2008 Report Share Posted October 15, 2008 Oi, A ZLib.Lib é do próprio xHarbour Vagner Wirts VI Encontro está chegando , não perca Quote Link to comment Share on other sites More sharing options...
kapiaba Posted October 15, 2008 Report Share Posted October 15, 2008 http://rapidshare.com/files/151683290/zlib.zip.html João Santos - São Paulo. kmt_karinha@pop.com.br kapiaba@brfree.com.br Fone: (11) 3106-2832 FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe Quote Link to comment Share on other sites More sharing options...
sambomb Posted October 15, 2008 Author Report Share Posted October 15, 2008 Então meu xHarbour é diferente.... prq não achei aqui não.... mas acho que achei um jeito de contornar... amanhã eu atualizo o tópico... samirabreu@hotmail.com xHarbour 1.1.0 + FwXh 8.02 Quote Link to comment Share on other sites More sharing options...
sambomb Posted October 17, 2008 Author Report Share Posted October 17, 2008 Bem... consegui driblar a falta do zLib... Já estou conseguindo criar o arquivo zip até achei que estava errado porque ele compacta um absurdo! Criei 4 arquivos de texto e preenchi com caracteres aleatórios com muito CTRL+C e CTRL+V e de 176 MB antes de compactar foi para incriveis 723KBid=red>!!! Sim KB!! Ele ficou 250x menor!! O que leva a crer que ele usa um algoritmo para identificar redundância de informação.... Achei algumas alternativas novas(32 bits) para as funções antigas(16 bits) relacionadas a ZIP No total são aproximadamente 20.000 caracteres, incluindo sintaxe, parâmetros, retornos e exemplos. Gostaria de saber como/quando/onde posso postar isso para que outros também possam fazer suas funções com a versão de 32 bits samirabreu@hotmail.com xHarbour 1.1.0 + FwXh 8.02 Quote Link to comment Share on other sites More sharing options...
Yury Posted October 17, 2008 Report Share Posted October 17, 2008 #include 'FiveWin.ch' #include 'Tcbrowse.ch' //---------------------------------------------------------- Function xZip() msginfo('Tecle algo para iniciar...') cARQZIP='C:\TEMP\MyZipFile.ZIP' IF FILE(cARQZIP) FERASE(cARQZIP) ENDIF MSGMETER({| o | ZiparArquivos(o) },"Zipando arquivos...", "Aguarde um momento") msginfo('Arquivo zip criado. Tecle algo para visualizar...') aFilesInZip = hb_GetFilesInZip(cARQZIP) aFiles={} for x=1 to len(aFilesInZip) cFile = cFileName(aFilesInZip[x]) cExte = cFileExt(cFile) AADD(aFiles,{STRTRAN(cFile,'.'+cExte,''),cExte}) next if len(aFiles)=0 AADD(aFiles,{'',''}) endif DEFINE DIALOG oDlg title 'Arquivos contidos no ZIP '+cArqzip FROM 01,01 TO 32,70 @ 01,01 BROWSE oITEM OF oDlg SIZE 250,175 oITEM:SetArray( aFiles ) ADD COLUMN TO BROWSE oITEM DATA ARRAY ELEM 01 SIZE 200 LEFT COLOR CLR_BLACK,CLR_WHITE HEADER "Arquivo" ADD COLUMN TO BROWSE oITEM DATA ARRAY ELEM 02 SIZE 040 CENTER COLOR CLR_BLACK,CLR_WHITE HEADER "Extensão" @ 12,01 button 'Cancelar' of oDlg size 50,12 action oDlg:End() ACTIVATE DIALOG oDlg CENTER return //---------------------------------------------------------- //---------------------------------------------------------- Function ZiparArquivos( oMeter ) local aFiles:={}, nLidos:=0, aTemp:=DIRECTORY('C:\TEMP\*.*') for x=1 to len(aTemp) aadd(aFiles,'C:\TEMP\'+ALLTRIM(aTemp[x,1])) next oMeter:nTotal = len(aFiles) HB_ZIPFILE(cARQZIP,aFiles,,{|| nLidos++, oMeter:SET(nLidos), SysRefresh() }) RETURN //---------------------------------------------------------- id=code>id=code>incluir na compilação hbzip.lib (xHarbour) abraço Yury Marcelino Al Viman Sistemas vimansca@vimansca.com.br yury030575@yahoo.com.br (msn) skype: yury.marcelino.al Leme / SP FW 2.6 / [x]Harbour 99.50 / WS / xDev 0.65 / @say Quote Link to comment Share on other sites More sharing options...
sambomb Posted October 21, 2008 Author Report Share Posted October 21, 2008 Alguem tem as sintaxes, parametros e retornos das funções de ZIP novas? Kapiaba, se você ainda tiver posta para mim por favor vi que você desenvolveu o XBLite.... samirabreu@hotmail.com xHarbour 1.1.0 + FwXh 8.02 Quote Link to comment Share on other sites More sharing options...
kapiaba Posted October 21, 2008 Report Share Posted October 21, 2008 XBLITE.PRG, PERTENCE(AUTORIA) DE: Carlos Vargas Desde Managua, Nicaragua (CA) http://www.fivewin.com.br/exibedicas.asp?id=822 Saludos a Carlos Vargas excelente persona. João Santos - São Paulo. kmt_karinha@pop.com.br kapiaba@brfree.com.br Fone: (11) 3106-2832 FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe Quote Link to comment Share on other sites More sharing options...
sambomb Posted October 21, 2008 Author Report Share Posted October 21, 2008 valeu!! Os devidos méritos a ele Mas... o que eu queria era a sintaxe,parametros e retornos... ja tinha baixado essa versão do XBLite e vi seu nome la por isso vim ver se vc tinha alguma documentação... algumas funções que ele usa para mim são desnecessarias e algumas não estão incluidas, como por exemplo senha... tenho as sintaxes apenas das funções: HB_ZIPFILE() //Create a zip file HB_UNZIPFILE() //Unzip a compressed file HB_GETUNZIPFILE() //Gets the number of files that are in the zipfile HB_ZIPFILEBYTDSPAN() //Create a zip file HB_ZIPFILEBYPKSPAN() //Create a zip file on removable media HB_SETDISKZIP() //Set an codeblock for disk changes HB_ZIPDELETEFILES() // Delete files from an zip archive HB_ZIPTESTPK() //Test pkSpanned zip files HB_GETZIPCOMMENT() //Return the comment of an zip file HB_SETZIPCOMMENT() //Set an Zip archive Comment HB_SETBUFFER() HB_GETUNRARFILE() //Gets the number of files that are in the RAR file HB_UNZIPFILEINDEX() //Unzip a compressed file referenced by it number in the zipfile samirabreu@hotmail.com xHarbour 1.1.0 + FwXh 8.02 Editado por - sambomb on 21/10/2008 14:44:44 Quote Link to comment Share on other sites More sharing options...
kapiaba Posted October 21, 2008 Report Share Posted October 21, 2008 citação: valeu!! Devidos méritos a ele samirabreu@hotmail.com xHarbour 1.1.0 + FwXh 8.02 id=quote>id=quote>Olá, veja este aqui tambem, enviado por outro amigo do forum internacional. http://www.fivewin.com.br/exibedicas.asp?id=945 Saudações. João Santos - São Paulo. kmt_karinha@pop.com.br kapiaba@brfree.com.br Fone: (11) 3106-2832 FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe Quote Link to comment Share on other sites More sharing options...
kapiaba Posted October 21, 2008 Report Share Posted October 21, 2008 citação: valeu!! Os devidos méritos a ele Mas... o que eu queria era a sintaxe,parametros e retornos... ja tinha baixado essa versão do XBLite e vi seu nome la por isso vim ver se vc tinha alguma documentação... algumas funções que ele usa para mim são desnecessarias e algumas não estão incluidas, como por exemplo senha... tenho as sintaxes apenas das funções: HB_ZIPFILE() //Create a zip file HB_UNZIPFILE() //Unzip a compressed file HB_GETUNZIPFILE() //Gets the number of files that are in the zipfile HB_ZIPFILEBYTDSPAN() //Create a zip file HB_ZIPFILEBYPKSPAN() //Create a zip file on removable media HB_SETDISKZIP() //Set an codeblock for disk changes HB_ZIPDELETEFILES() // Delete files from an zip archive HB_ZIPTESTPK() //Test pkSpanned zip files HB_GETZIPCOMMENT() //Return the comment of an zip file HB_SETZIPCOMMENT() //Set an Zip archive Comment HB_SETBUFFER() HB_GETUNRARFILE() //Gets the number of files that are in the RAR file HB_UNZIPFILEINDEX() //Unzip a compressed file referenced by it number in the zipfile samirabreu@hotmail.com xHarbour 1.1.0 + FwXh 8.02 Editado por - sambomb on 21/10/2008 14:44:44 id=quote>id=quote>Olá, você deve entrar no forum do XHARBOUR e perguntar diretamente ao MARCELO LOMBARDO ou say lá... kkkkkkkkkkk. Abraços. João Santos - São Paulo. kmt_karinha@pop.com.br kapiaba@brfree.com.br Fone: (11) 3106-2832 FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe Quote Link to comment Share on other sites More sharing options...
sambomb Posted October 21, 2008 Author Report Share Posted October 21, 2008 Não tem nenhuma forma de retirar essas informações da lib não? samirabreu@hotmail.com xHarbour 1.1.0 + FwXh 8.02 Quote Link to comment Share on other sites More sharing options...
kapiaba Posted October 21, 2008 Report Share Posted October 21, 2008 citação:Não tem nenhuma forma de retirar essas informações da lib não? samirabreu@hotmail.com xHarbour 1.1.0 + FwXh 8.02 id=quote>id=quote>NÃO TENHO CERTEZCA, MAS TALBÉZ, USANDO A TLIB.EXE QUEM MANJA DISTO, É O SENHOR VAGNER WIRTS, EU NÃO! João Santos - São Paulo. kmt_karinha@pop.com.br kapiaba@brfree.com.br Fone: (11) 3106-2832 FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.