![]() |
Descomprimir archivo rar
Buenas.
Primeramente me gustaría hacer hincapié en mi inutilidad para buscar en este foro. Lo que realmente quiero lograr es descomprimir un archivo rar dado sin que se habra la ventanita típica de winrar para explorar archivos. Es decir shellexecute(archivo.rar) no me vale. Si me voy a Windows Inicio y escribo winrar E archivo.rar sucese algo similar a lo que quiero lograr. Se descomprme el archivo y sólo veo la barra de progreso. Trato de hacer lo mismo pero no tengo ni idea. En la página de Winrar hay tutoriales de los parámetros que se pueden pasar pero le pongo los parametros en shellexecute ShellExecute(Self.Handle,'',pansichar(flname.FileName),'','E',SW_HIDE) (se supone que la E es lo que hace que descomprima sin rechistar) y me muestra la dichosa pantallita que no quiero ver... Imagino que habrá algún hilo/tema/post que me pueda servir. Si fuesen tan amables de redirigerme... Muchas gracias. |
Revisar tambien APIs; RAROpenArchive y RARProcessFile de la libreria unrar.dll. Saludos |
Para descomprimir archivos en general, ya sea con WinRAR, WinZip y otros sin componentes, lo primero que tienes que entender es que el programa principal (el IDE) no es el compresor en si, sino que es una interfaz gráfica de usuario para la consola de comandos/librerías que vienen incluidas para trabajar con la GUI. Además debes detectar la instalación del compresor y la ruta del mismo para que el programa no se cuelgue. Para saber en qué ruta está instalado WinRAR puedes hacer una rutina simple examinando las claves/valores desde el registro de Windows (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\WinRAR archiver)
Bueno... directamente con lo que requieres, debes pasarles parámetros a la consola de comandos (a rar.exe) de WinRAR para comprimir/descomprimir archivos de este tipo. La consola de comandos tiene como nombre de archivo rar.exe y se encuentra en el directorio de instalación del programa (EJ: C:\Archivos de programa\WinRAR). Al examinar la ayuda de la consola, se despliega esto: Código:
C:\Archivos de programa\WinRAR>rar.exe /?
Si deseas controlar toda la ejecución y sus hilos de la consola y saber qué valores devuelve al finalizar la compresión/descompresión (ExitCode), utiliza la función CreateProcess en vez de ShellExecute (consultar la ayuda de Delphi para ampliar esta información). Saludos y buena suerte :) |
[cHackAll], me ganaste el primero posteo de nuevo :D, me demoré mucho en terminar de escribir jejejeje, que son rápidos aquí. Bueno, ahí tienes dos ayudas, la de Él y la mía =)
Saludos. |
Oye pues muchas gracias.
Y ahora ya el colofón final para dejarlo todo aquí en el mismo hilo. Si rar.exe no está en archivos de programa o en c:\...sino en D:\.... ¿Como busca delphi en el registro la ruta exacta del ejecutable rar.exe? Si obtenemos la ruta del programa asociado a *.rar lo tenemo redondo? Lo he dicho así sin mirar. Me suena que hay una clase que es la que se usa para el registro. Mañana miraré a ver si encuentro el ejemplo que tenía de eso a ver si saco algo. Muchas gracias de nuevo a todos. |
Vaya perdón que si que lo habias comentado...
|
Pero estamos suponiendo que:
- Winrar está instalado - y que está en la ruta tal o cual. ¿Y si no dependes de winrar e implementas tú la compresión/decompresión? Saludos |
La franja horaria es GMT +2. Ahora son las 06:27:18. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi