La Web del Programador: Comunidad de Programadores
 
    Pregunta:  31564 - COMPRIMIR UN FICHERO CON WINZIP
Autor:  Fernando PM
Hola, necesito comprimir un fichero con wipZip u otro programa
pero no se como hacer que mi programa ejecute
el WinZip para comprimir un fichero que yo le doy
Conozco la funcion esta :
WinExec(PChar(\'C:\\Archivos de programa\\WinZip\\WINZIP32.EXE\'),SW_SHOWNORMAL);

Pero solo me abre el WinZip y no me comprime el fichero o al menos no se como se hace.
Por favor si teneis alguna solucion decirmelo, gracias
Un saludo

  Respuesta:  Luis Felipe García Gutiérrez
Pues te cuento huho ho que tu procedimiento no me funcionó, pasa por la sentencia e inclusive me gemera el mensaje de éxito de la operación pero por ninguna parte encuentro en la ruta que direccioné el archivo comprimido.

winexec(PChar('"C:\Archivos de programa\WinZip\WINZIP32.exe -min -a -ex -hs C:\BackUp\bd'+hoy+'.zip C:\BackUp\bd.mdb"'),SW_SHOWNORMAL);

me vi en la necesidad de poner al final de la línea ,SW_SHOWNORMAL, proque no quería compilar por la falta del parámetro.

Gracias!!!

  Respuesta:  hugo oh
hola,

puedes utilizar lo siguiente:

sComando := winzipdir+ ' -min -a -ex -hs ' + destino + ' "' + carpeta + '*.*"';

donde:

winzipdir = nombre y path del winzip32.exe...
destino = nombre del archivo que se va a generar...
carpeta = nombre de la carpeta donde se encuentran los archivos que se quieren comprimir. o puede ser el archivo a comprimir, claro se tendria que omitir *.*

algo asi como:

"...winzip32.exe -min -a -ex -hs archivodestino.zip archivofuente.xxx"
para un archivo...

o

"...winzip32.exe -min -a -ex -hs archivodestino.zip .\carpeta\*.*"
para todos los archivos de la carpeta deseada...

ojala y te sirva...

ah!, por supuesto lo ejecutas con winexec(PChar(sComando));
aunque lo correcto es utilizar CreateProcess(...)

saludos...

EOF