Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Visual FoxPro - Criando arquivos ZIP com o Shell do Windows, Notas de estudo de Informática

Criaçao de arquivos zipados via Visual FoxPro

Tipologia: Notas de estudo

Antes de 2010

Compartilhado em 28/09/2010

francis-barrimbhal-8
francis-barrimbhal-8 🇧🇷

4.6

(16)

26 documentos

1 / 2

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Página 1iMasters - Por uma Internet mais criativa e dinâmica
9/28/2010 11:52:26 AMhttp://imasters.uol.com.br/artigo/4089/visual_foxpro/criando_arquivos_zip_com_o_shell_do_windows/imprimir/
Fabiano Costa Sexta-feira, 19 de maio de 2006
Criando arquivos ZIP com o Shell do Windows
Mais cedo ou mais tarde, qualquer programador vai se deparar com os arquivos ZIP. Seja para um backup, uma transferência de arquivos ou qualquer outro motivo.
Sendo ele um padrão de fato no mundo da compactação, acho incrível como as linguagens de programação não possuem uma função própria para manipulá-los, fazendo
com que os programadores tenham que recorrer a DLL e OCX de terceiros ou até mesmo o comando RUN para implementá-los.
Se você utiliza o Windows XP com a opção de gerenciamento de pastas ZIP, pode utilizar o próprio Shell do Windows para gravar e recuperar arquivos zipados.
Observe a classe abaixo:
DEFINE CLASS ZIP as Custom
HIDDEN nomezip,nomediretorio
nomezip=.null.
nomediretorio=.null.
erro=""
FUNCTION init as VOID
IF TYPE("_zipshell")#"U"
RETURN
endif
PUBLIC _zipshell as Object
_zipshell=createobject("Shell.Application")
RETURN
ENDFUNC
FUNCTION arquivozip (m.lcArquivo as String) as Boolean
IF !FILE(m.lcArquivo)
STRTOFILE(Chr(80)+Chr(75)+Chr(5)+Chr(6)+Replicate(Chr(0),18),m.lcArquivo)
endif
this.nomezip=_zipshell.namespace(m.lcArquivo)
RETURN !ISNULL(this.nomezip)
ENDFUNC
FUNCTION diretorio (m.lcDiretorio as String) as Boolean
this.nomediretorio=_zipshell.namespace(m.lcDiretorio)
RETURN !ISNULL(this.nomediretorio)
ENDFUNC
FUNCTION zip as Boolean
IF !this.verifica()
RETURN .f.
ENDIF
this.nomezip.copyhere(this.nomediretorio)
RETURN .t.
ENDFUNC
FUNCTION unzip as Boolean
IF !this.verifica()
RETURN .f.
ENDIF
this.nomediretorio.copyhere(this.nomezip.items)
endfunc
HIDDEN FUNCTION verifica as Boolean
IF ISNULL(this.nomezip)
this.erro="Arquivo ZIP não existe"
RETURN .f.
ENDIF
IF ISNULL(this.nomediretorio)
this.erro="Diretorio nao existe"
RETURN .f.
ENDIF
ENDFUNC
ENDDEFINE
E podemos usá-la com o seguinte exemplo:
objZip=CREATEOBJECT("zip")
&& Para criar o arquivo ZIP
objzip.arquivozip("d:\work\meuzip.zip")
objzip.diretorio("d:\teste")
pf2

Pré-visualização parcial do texto

Baixe Visual FoxPro - Criando arquivos ZIP com o Shell do Windows e outras Notas de estudo em PDF para Informática, somente na Docsity!

iMasters - Por uma Internet mais criativa e dinâmica Página 1

http://imasters.uol.com.br/artigo/4089/visual_foxpro/criando_arquivos_zip_com_o_shell_do_windows/imprimir/ 9/28/2010 11:52:26 AM

Fabiano Costa Sexta-feira, 19 de maio de 2006

Criando arquivos ZIP com o Shell do Windows

Mais cedo ou mais tarde, qualquer programador vai se deparar com os arquivos ZIP. Seja para um backup, uma transferência de arquivos ou qualquer outro motivo.

Sendo ele um padrão de fato no mundo da compactação, acho incrível como as linguagens de programação não possuem uma função própria para manipulá-los, fazendo com que os programadores tenham que recorrer a DLL e OCX de terceiros ou até mesmo o comando RUN para implementá-los.

Se você utiliza o Windows XP com a opção de gerenciamento de pastas ZIP, pode utilizar o próprio Shell do Windows para gravar e recuperar arquivos zipados.

Observe a classe abaixo:

DEFINE CLASS ZIP as Custom HIDDEN nomezip,nomediretorio nomezip=.null. nomediretorio=.null. erro="" FUNCTION init as VOID IF TYPE("_zipshell")#"U" RETURN endif PUBLIC _zipshell as Object _zipshell=createobject("Shell.Application") RETURN ENDFUNC FUNCTION arquivozip (m.lcArquivo as String) as Boolean IF !FILE(m.lcArquivo) STRTOFILE(Chr(80)+Chr(75)+Chr(5)+Chr(6)+Replicate(Chr(0),18),m.lcArquivo) endif this.nomezip=_zipshell.namespace(m.lcArquivo) RETURN !ISNULL(this.nomezip) ENDFUNC FUNCTION diretorio (m.lcDiretorio as String) as Boolean this.nomediretorio=_zipshell.namespace(m.lcDiretorio) RETURN !ISNULL(this.nomediretorio) ENDFUNC FUNCTION zip as Boolean IF !this.verifica() RETURN .f. ENDIF this.nomezip.copyhere(this.nomediretorio) RETURN .t. ENDFUNC FUNCTION unzip as Boolean IF !this.verifica() RETURN .f. ENDIF this.nomediretorio.copyhere(this.nomezip.items) endfunc HIDDEN FUNCTION verifica as Boolean IF ISNULL(this.nomezip) this.erro="Arquivo ZIP não existe" RETURN .f. ENDIF IF ISNULL(this.nomediretorio) this.erro="Diretorio nao existe" RETURN .f. ENDIF ENDFUNC ENDDEFINE

E podemos usá-la com o seguinte exemplo:

objZip=CREATEOBJECT("zip")

&& Para criar o arquivo ZIP objzip.arquivozip("d:\work\meuzip.zip") objzip.diretorio("d:\teste")

iMasters - Por uma Internet mais criativa e dinâmica Página 2

http://imasters.uol.com.br/artigo/4089/visual_foxpro/criando_arquivos_zip_com_o_shell_do_windows/imprimir/ 9/28/2010 11:52:26 AM

IF !objzip.zip() MESSAGEBOX(objzip.erro) endif

&& Para descompactar objzip.arquivozip("d:\work\meuzip.zip") objzip.diretorio("d:") IF !objzip.zip() MESSAGEBOX(objzip.erro) endif

Esta classe usa o Shell do Windows para manipular arquivos .ZIP com algumas limitações:

  • A operação ocorre com diretórios e não com arquivos avulsos.
  • Só esta disponível para computadores que utilizam o gerenciamento de pastas zip

Esta classe embora funcional, não substitui uma biblioteca profissional de manipulação de arquivos .ZIP mas é muito didática para entendermos como realizar trabalhos com o Shell do Windows diretamente com o Visual Fox Pro.