

Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Criaçao de arquivos zipados via Visual FoxPro
Tipologia: Notas de estudo
1 / 2
Esta página não é visível na pré-visualização
Não perca as partes importantes!


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
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:
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.