Preview only show first 10 pages with watermark. For full document please download

Visual Foxpro - Criando Arquivos Zip Com O Shell Do Windows

Criaçao de arquivos zipados via Visual FoxPro

   EMBED


Share

Transcript

iMasters - Por uma Internet mais criativa e dinâmica Página 1 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") 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 iMasters - Por uma Internet mais criativa e dinâmica Página 2 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. 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