Jump to content
Fivewin Brasil

Listar arquivos de um ZIP(Resolvido, Aleluia!!)


sambomb

Recommended Posts

Eu tambem não entendi.... deve ser alguma coisa na minha maquina, sei la.... eu não compilei o programa(xBlite) portanto não pode ter sido alguma modificação acidental e eu não consigo extrair nenhum arquivo com ele....

Sempre da a mensagem de erro:

citação:"Erro... Não Foi Possível Recriar o Arquivo de Segurança..."


id=quote>id=quote>

Correspondente a linha 869 em xBlite.prg, que indica um .F. como resultado do HB_UnzipFile

O mais estranho(ou nem tanto) é que consigo extrair com aplicativos "industrializados" (WinZip, WinRar) mas não consigo com os manufaturados(xBlite) e o meu....

MSN: samirabreu@hotmail.com

Skype: SamirAbreu

xHarbour 1.1.0 + FwXh 8.02

Link to comment
Share on other sites

  • Replies 55
  • Created
  • Last Reply

Top Posters In This Topic

como vc tá usando uma classe sua, eu adaptei seu código para funcionar sem ela e testei aqui, tudo ok, descompactou beleza...


//----------------------------------------------------------------------------------

FUNCTION MAIN()

cARQZIP='C:\TEMP\MyZipFile.ZIP'

IF Extrair({'ANDRE.TXT','B32.BC','BROWSER.DEF'},'C:\TESTE_ZIP\',.T.,cARQZIP)

? 'OK, DESCOMPACTADO COM SUCESSO !'

ELSE

? 'OCORREU UM ERRO !'

ENDIF

RETURN

//----------------------------------------------------------------------------------

//----------------------------------------------------------------------------------

FUNCTION Extrair(paFile,pcDestPath,lAvisa,cZipFile)

local lExtrai:=.T., i:=0, cTipoFile:=ValType(paFile), cTipoDest:=ValType(pcDestPath)

Local Result := .F.

Default lAvisa := .F.

//-- Verifica integridade do parâmetro paFileName

if cTipoFile == "U"

MsgALERT("Parâmetro de arquivos vazio")

Return .F.

elseif cTipoFile != "A" .and. cTipoFile != "C"

MsgALERT("Parâmetro de arquivos inválido")

Return .F.

elseif cTipoFile == "C"

paFile := {paFile}

end

//-- Verifica integridade do parâmetro pcDestPath

if cTipoDest == "U"

MsgALERT("Parâmetro de destino vazio")

Return .F.

elseif cTipoDest != "C"

MsgALERT("Parâmetro de destino inválido")

Return .F.

end

//-- Verifica se o destino indicado existe

if !IsDirectory(pcDestPath)

MsgALERT("Destino não existe")

Return .F.

end

for i := 1 to Len(paFile)

lExtrai := .T.

//-- Se encontrar arquivo igual testa se o parâmetro foi indicado

if lAvisa

//-- Procura por arquivos iguais

if file(alltrim(pcDestPath)+ALLTRIM(paFile))

//-- Se o parâmetro foi indicado pergunta se deseja sobreescrever

if MSGYESNO("Arquivo "+paFile+" já encontrado, sobreescrever ?")

lExtrai := .T.

else

lExtrai := .F.

end

end

end

//-- Testa se pode extrair ou não

if lExtrai

Result := HB_UNZIPFILE(cZipFile,,.T.,,pcDestPath,paFile)

end

end

return Result

//----------------------------------------------------------------------------------

id=code>id=code>

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

Link to comment
Share on other sites

citação:

como vc tá usando uma classe sua, eu adaptei seu código para funcionar sem ela e testei aqui, tudo ok, descompactou beleza...

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


id=quote>id=quote>

Então a dúvida é, o que pode estar fazendo isso? O que influenciaria tanto o xBlite quanto o meu programa?

[Edit] Passa os parâmetros que você utilizou para ver se é algum parâmetro que eu to usando errado, mas acho que não é isso....

PS.: Testei o meu programa em outra máquina também e não funcionou....

[/Edit]

MSN: samirabreu@hotmail.com

Skype: SamirAbreu

xHarbour 1.1.0 + FwXh 8.02

Editado por - sambomb on 29/10/2008 17:52:03

Link to comment
Share on other sites

Modifiquei o código aqui para ficar mais simples de entender e segue o resultado....

deu CERTO!!!! mas o xBlite continua dando erro icon_smile_shock.gif

Acho que meu erro tava quando alimentava a função, tem a alteração em vermelho abaixo.


****************************************************************************

static function Extrair()

****************************************************************************

*

* Abrir um zip

* Parametros:

* Retorno:

*

* Autor: Samir

* 15/10/2008 - 17:24:34

*

****************************************************************************

local Result := .F., aAux := {}, i := 0, cBuffer := "", nExtraidos := 0

Select TMPZIP

dbsetorder(2)

dbgotop()

if dbseek("E")

While !Eof()

cBuffer := AllTrim(CAMINHO)

cBuffer := cFileName(cBuffer)

id=red>

aAdd(aAux,cBuffer)

dbskip()

if STATUS != "E"

exit

end

end

end

dbsetorder(1)

IF Len(aAux) = 0

Msg("Nenhum arquivo selecionado para extração")

Return Result

end

For i := 1 to Len(aAux)

AtualizaProgresso(oProgresso,i,Len(aAux))

Result := oZip:Extrair(aAux,cGtBackup[3])

if Result

nExtraidos++

end

end

if nExtraidos > 0

if nExtraidos++ != Len(aAux)

Msg(Str(nExtraidos,,,.T.)+" arquivo(s) extraído(s) com sucesso de ";

Str( Len(aAux),,,.T.)+" arquivo(s) possíveis")

else

Msg("Arquivo(s) extraído(s) com sucesso!")

end

else

Msg("Erro ao extrair o(s) arquivo(s)")

end

Zera()

Return Result

/*------------------------------------------------------------------------*/

****************************************************************************

METHOD Extrair(paFile,pcDestPath,lAvisa) CLASS TZIP

****************************************************************************

*

* Extrair arquivos de um ZIP pré existente

* Parametros:

* paFile = Array com os nomes dos arquivos a serem extraidos

* OBS.: Também aceita caracter para o caso de apenas 1 arquivo

*

* pcDestPath = Caracter com o caminho completo do destino para extrair o arquivo

*

* lAvisa = Idenfica a necessidade de confirmação para sobreescrever

*

* Retorno: Lógico = .T. se conseguiu gravar, .F. se ocorreu algum erro

*

* Autor: Samir

* 10/10/2008 - 15:17:35

*

****************************************************************************

local lExtrai:=.T., i:=0, Result := .F., cNomeArquivo := ::cPath+::cNome

Default lAvisa := .F.

if !VerificaIntegridade(paFile,pcDestPath)

Return Result

end

if ValType(paFile) == "C"

paFile := {paFile}

end

for i := 1 to Len(paFile)

if lAvisa

lExtrai := CheckUnZip(pcDestPath,paFile)

end

//-- Testa se pode extrair ou não

if lExtrai

Result := HB_UNZIPFILE(cNomeArquivo ,/*bBlock*/, .T., ::cPass,;

pcDestPath, paFile/*,pFileProgress*/)

end

end

return Result

/*------------------------------------------------------------------------*/

****************************************************************************

static function VerificaIntegridade(paFile,pcDestPath)

****************************************************************************

*

* Verificar a integridade dos parâmetros passados

* Parametros: paFile,pcDestPath

* Retorno: Lógico, .T. se estiver Ok

*

* Autor: Samir

* 30/10/2008 - 09:06:35

*

****************************************************************************

local cTipoFile:=ValType(paFile), cTipoDest:=ValType(pcDestPath)

//-- Verifica integridade do parâmetro paFileName

if cTipoFile == "U"

Msg("Parâmetro de arquivos vazio")

Return .F.

elseif cTipoFile != "A" .and. cTipoFile != "C"

Msg("Parâmetro de arquivos inválido")

Return .F.

end

//-- Verifica integridade do parâmetro pcDestPath

if cTipoDest == "U"

Msg("Parâmetro de destino vazio")

Return .F.

elseif cTipoDest != "C"

Msg("Parâmetro de destino inválido")

Return .F.

end

//-- Verifica se o destino indicado existe

if !IsDirectory(pcDestPath)

Msg("Destino não existe")

Return .F.

end

Return .T.

/*------------------------------------------------------------------------*/

****************************************************************************

static function CheckUnZip(pcDestPath,pcNome)

****************************************************************************

*

* Procurar por arquivos com o mesmo nome dentro da pasta onde vai extrair

* Parametros: pcDestPath = Destino de extração dos arquivos

* pcNome = Nome do arquivo a sert extraido

* Retorno: Lógico, .T. se encontrar, .F. se não encontrar

*

* Autor: Samir

* 10/10/2008 - 16:33:32

*

****************************************************************************

local Result := .T.

if !File(pcDestPath+pcNome)

Return .T.

end

if Result

if SN("Arquivo "+paFile+" já encontrado, sobreescreve")

Result := .T.

else

Result := .F.

end

end

Return Result

/*------------------------------------------------------------------------*/

id=code>

id=code>

Obrigado a todos que tiveram paciência, e especialmente ao Yuri que deu uma luz ao modificar a função icon_smile_wink.gif

MSN: samirabreu@hotmail.com

Skype: SamirAbreu

xHarbour 1.1.0 + FwXh 8.02

Link to comment
Share on other sites

citação:

Obrigado a todos que tiveram paciência, e especialmente ao Yuri que deu uma luz ao modificar a função


id=quote>id=quote>

icon_smile_big.gif

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

Link to comment
Share on other sites

  • 1 year later...

citação:

icon_smile_big.gif valeu!!

Os devidos méritos a ele icon_smile_wink.gif

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>

Ola Samir , estava precisando da sintaxe do HB_UNZIPFILEINDEX() , vc conseguiu, tem link postado pelo Leonardo de um manual neste mesmo tópico mais o link não esta mais valido, tb não sei se la tem a sintaxe deste comando...

Obrigado

Luiz Fernando

msn: empresoft@globo.com

skype:empresoft

empresoft@globo.com

FWH 8.04,XHARBOUR 1.1,PELES,XDEV,VLIB,ADS 8.1

FWH 9.12,XHARBOUR 1.2,ADS 9.0

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...