Autor Tema: Descomprimir (Function) [Ayuda]  (Leído 3554 veces)

0 Usuarios y 1 Visitante están viendo este tema.

th3y

  • Bytes
  • *
  • Mensajes: 26
  • Reputación: +0/-0
  • Juaneco
    • Ver Perfil
    • Mutsurini Storage Host
Descomprimir (Function) [Ayuda]
« en: Agosto 02, 2012, 03:34:53 am »
Estaba buscando la manera de comprimir archivos y encontra esto

Código: [Seleccionar]
Private Function Comprimir(DestPath As Variant, SrcPath As Variant) As Boolean
    On Error GoTo Fail
   
    Dim oShell As Object
   
    Set oShell = CreateObject("Shell.Application")
   
    If Dir(DestPath) = "" Then
        Open DestPath For Binary As #1
            Put #1, , CStr("PK" & Chr(5) & Chr(6) & String(18, Chr(0)))
        Close
    End If
   
   
    oShell.NameSpace(DestPath).CopyHere SrcPath
    Comprimir = True
Fail:

End Function

Pero ahora busco, como se descomprimiria?
No estoy buscando archivos de terceros, no me gustan las dependencias? saben alguna otra forma?

raul338

  • Terabyte
  • *****
  • Mensajes: 894
  • Reputación: +62/-8
  • xD fan!!!!! xD
    • Ver Perfil
    • Raul's Weblog
Re:Descomprimir (Function) [Ayuda]
« Respuesta #1 en: Agosto 02, 2012, 09:54:51 am »
Pero ahora busco, como se descomprimiria?
No estoy buscando archivos de terceros, no me gustan las dependencias? saben alguna otra forma?

En realidad ahí estas dependiendo de una extension de la shell de windows que puede ser desactivada :P y ademas que eso puede que funcione en Win7 pero a veces no funciona en XP (si, es raro :|)

Lo mejor es tener alguna DLL o el 7zip en consola al lado :P

LeandroA

  • Administrador
  • Petabyte
  • *****
  • Mensajes: 1128
  • Reputación: +151/-8
    • Ver Perfil
Re:Descomprimir (Function) [Ayuda]
« Respuesta #2 en: Agosto 02, 2012, 05:29:21 pm »
Hola, como funcionar en XP funciona, claro como dice Raul puede que el servicio no este habilitado, pero creo que las probabilidades son muy bajas.

este parte de un código que usaba yo en una clase en la cual te da el progreso pero solo te pongo lo principal por si te interesa la clase esta en la parte del blog como Proyecto 2, en la parte del cliente.


Código: (vb) [Seleccionar]
Public Function UnZipPath(ByVal SrcPath As String, ByVal DestPath As String) As Boolean
   
    On Error GoTo Fail

    Dim oShell As Object
    Dim OrigItem As Object
    Dim DestItem As Object
   
    Set oShell = CreateObject("Shell.Application")
   
    For Each OrigItem In oShell.NameSpace(CVar(SrcPath)).Items
        For Each DestItem In oShell.NameSpace(CVar(DestPath)).Items
            If CBool((OrigItem.Name = DestItem.Name) And (OrigItem.Type = DestItem.Type)) Then GoTo Fail
        Next
    Next

    oShell.NameSpace(CVar(DestPath)).CopyHere oShell.NameSpace(CVar(SrcPath)).Items
   
    UnZipPath = True
Fail:

End Function


Public Function ZipPath(ByVal SrcPath As String, ByVal DestPath As String) As Boolean
    On Error GoTo Fail

    Dim oShell As Object
   
    If Dir(DestPath) <> "" Then Kill DestPath
   
    Set oShell = CreateObject("Shell.Application")
   
    If Dir(DestPath) = "" Then
        Open DestPath For Binary As #1
            Put #1, , CStr("PK" & Chr(5) & Chr(6) & String(18, Chr(0)))
        Close
    End If

    oShell.NameSpace(CVar(DestPath)).CopyHere CVar(SrcPath)

    ZipPath = True
Fail:

End Function

Saludos.

th3y

  • Bytes
  • *
  • Mensajes: 26
  • Reputación: +0/-0
  • Juaneco
    • Ver Perfil
    • Mutsurini Storage Host
Re:Descomprimir (Function) [Ayuda]
« Respuesta #3 en: Agosto 03, 2012, 08:26:26 pm »
Gracias Leandro :D
-
Raul, hay unas cuantas cosas que pienso respecto a esa dependencia? hay alguna forma de hacerlo independientemente dependiente? xD

Osea... tal vez.. hipoteticamente.. que cuando el programa se abra.. se autogenere el archivo dependiente.. eh escuchado y eh visto algo parecido en algunos programas.. un ejemplo es un downloader de youtube(convierte lo descargado con el archivo ffmpeg)
o hay alguna forma que puedas alojar el archivo dll dentro del programa, y soltarlo cada vez que se ejecute? 

raul338

  • Terabyte
  • *****
  • Mensajes: 894
  • Reputación: +62/-8
  • xD fan!!!!! xD
    • Ver Perfil
    • Raul's Weblog
Re:Descomprimir (Function) [Ayuda]
« Respuesta #4 en: Agosto 03, 2012, 10:26:57 pm »
Osea... tal vez.. hipoteticamente.. que cuando el programa se abra.. se autogenere el archivo dependiente.. eh escuchado y eh visto algo parecido en algunos programas.. un ejemplo es un downloader de youtube(convierte lo descargado con el archivo ffmpeg)
o hay alguna forma que puedas alojar el archivo dll dentro del programa, y soltarlo cada vez que se ejecute? 
Exacto, y si se puede, yo he hecho eso y me ha funcionado de maravillas :P y así funcionan los "droppers"

Colocas tu dependencia en un archivo de recursos, y eso lo pones cuando generas el EXE (o despues :P) y luego tienes que codificar que cuando se abra, si no existe la dependencia, la extraes y lo registras y haces todo el tramite :P

th3y

  • Bytes
  • *
  • Mensajes: 26
  • Reputación: +0/-0
  • Juaneco
    • Ver Perfil
    • Mutsurini Storage Host
Re:Descomprimir (Function) [Ayuda]
« Respuesta #5 en: Septiembre 22, 2012, 11:50:10 am »
Una consulta (Revivi el tema despues de tiempo)

Como podria hacer para agregar mas de 1 archivo en un comprimido? y asi viceversa con descomprimir!
Gracias!